0Pricing
Go Academy · Aula

Fundamentos do pacote plugin do Go

Crie arquivos .so e use plugin.Open / Lookup

Fundamentos do pacote plugin do Go é uma aula grátis de Go Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Go Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Go Academy inclui 4 aulas no total.

O que é o pacote de plug-ins do Go?

O pacote plugin (Go 1.8+) permite carregar bibliotecas compartilhadas .so compiladas durante a execução e chamar as funções e variáveis exportadas por elas.

Criando um plug-in

Compile um arquivo Go como plug-in com -buildmode=plugin:

// greeter/greeter.go
package main
func Greet(name string) string { return "Hello, " + name }

Carregando um plug-in

Carregue o arquivo .so e procure os símbolos exportados:

p, err := plugin.Open("./greeter.so")
if err != nil { log.Fatal(err) }

sym, err := p.Lookup("Greet")
if err != nil { log.Fatal(err) }

greet, ok := sym.(func(string) string)
if !ok { log.Fatal("wrong type") }
fmt.Println(greet("World"))

Restrições dos plug-ins

Todos os pacotes importados pelo plug-in e pelo programa hospedeiro devem ter versões idênticas. O plug-in deve usar package main. Não é possível descarregar plug-ins depois que eles são carregados.

Tipos de símbolos

plugin.Lookup retorna um any. Faça uma asserção de tipo para a assinatura de função ou o tipo de variável esperado. Incompatibilidades causam pânicos durante a execução.

Limitações de plataforma

O pacote de plug-ins funciona no Linux e no macOS, mas não no Windows nem com CGO_ENABLED=0. Ele também não oferece suporte à compilação cruzada para destinos de plug-ins.

Compatibilidade de versões

O plug-in e o programa hospedeiro devem ser compilados com a mesma versão do Go e as mesmas versões de todos os pacotes compartilhados. Uma incompatibilidade de versões faz o plug-in falhar ao carregar.

Casos de uso

Os plug-ins são adequados para: sistemas de gerenciamento de conteúdo com manipuladores fornecidos pelos usuários, bancos de dados com back-ends de armazenamento substituíveis e aplicações que precisam de extensões carregáveis durante a execução sem recompilar o programa hospedeiro.

Alternativas

Para obter mais flexibilidade, use plug-ins baseados em RPC (go-plugin da HashiCorp), módulos WebAssembly ou uma linguagem de script (Lua, Starlark) incorporada ao programa hospedeiro em vez de plug-ins nativos.

Depurando plug-ins

Os símbolos do plug-in não foram encontrados? Verifique: o package main correto, um símbolo exportado (com inicial maiúscula), tags de compilação e versões de módulos correspondentes e a plataforma correta.

O carregamento de plug-ins é unidirecional

Depois que um plug-in é carregado, não é possível descarregá-lo. Projete os sistemas para tolerar todos os plug-ins carregados ativos durante toda a vida útil do processo.

Verificação rápida

Qual é uma limitação importante do pacote de plug-ins do Go em comparação com o go-plugin da HashiCorp?

Recapitulação: pacote de plug-ins do Go

Pontos principais:

  • Compile com -buildmode=plugin; carregue com plugin.Open
  • plugin.Lookup retorna any; faça uma asserção de tipo para o tipo esperado
  • Apenas Linux/macOS; são necessárias versões idênticas; não há descarregamento
  • Prefira go-plugin (baseado em RPC) para obter flexibilidade entre plataformas

Perguntas Frequentes

A aula “Fundamentos do pacote plugin do Go” é grátis?

Sim — o texto completo de “Fundamentos do pacote plugin do Go” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Go Academy, atualize para CoddyKit PRO. O curso de Go Academy inclui 4 aulas no total.

O que vou aprender em “Fundamentos do pacote plugin do Go”?

Crie arquivos .so e use plugin.Open / Lookup Você pratica Go Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Go Academy?

Nenhuma experiência prévia é necessária. Go Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Fundamentos do pacote plugin do Go”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Go Academy?

Sim. Cada aula de Go Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Fundamentos do pacote plugin do Go
  2. Projetando uma interface de plugin
  3. Carregamento dinâmico e símbolos
  4. Alternativas: HashiCorp go-plugin
← Voltar para Go Academy