Visão Geral do WebAssembly (veja a seção WebAssembly & TinyGo)
O Go pode ter como alvo o WebAssembly sem cgo: o caminho do navegador usa GOOS=js GOARCH=wasm com syscall/js, e o caminho do servidor/edge usa GOOS=wasip1 GOARCH=wasm para hosts WASI.
cgo é indisponível em alvos wasm, então a interoperação muda para pontes JavaScript, importações WASI ou TinyGo para compilações restritas.
WebAssembly é uma alternativa portátil ao cgo nativo quando você implanta em navegadores, runtimes de edge ou plugins com sandbox.
Pipelines de build completos, ajuste de tamanho e comparações de host estão na seção WebAssembly & TinyGo - esta página orienta leitores de cgo sobre quando mudar.
Esperando drivers cgo em wasm - Falha na compilação ou tags excluem pacotes. Correção: Drivers puramente Go e arquivos de build específicos para wasm.
Executando gc wasm no navegador sem wasm_exec.js - Erros de carregamento. Correção: Siga a wiki wasm do Go para configurar seu bundler.
Assumindo net completo em js/wasm - Restrito por sandboxes de host. Correção: Use pontes fetch/WebSocket documentadas para syscall/js.
Grandes binários wasm de importações stdlib - Carregamentos web lentos. Correção: TinyGo ou reduza dependências; veja o guia de tamanho na seção WebAssembly.
Misturando tags wasip1 e js - Conjuntos de syscalls diferentes. Correção: Separe pacotes main ou tags de build explícitas por alvo.
Ignorando a matriz de capacidade do host - As prévias WASI diferem entre os runtimes. Correção: Teste nas versões wazero/wasmtime que você envia.
Versões da Stack: Esta página foi escrita para Go 1.26.x (padrão Green Tea GC, modernizadores go fix - verifique o patch na compilação), chi (última versão - verifique na compilação), gin (última versão - verifique na compilação), echo (última versão - verifique na compilação), google.golang.org/grpc (última versão - verifique na compilação), sigs.k8s.io/controller-runtime (última versão - verifique na compilação), kubebuilder (última versão - verifique na compilação), tinygo (última versão - verifique os alvos de placa na compilação), wazero (última versão - verifique na compilação) e golangci-lint (última versão - verifique o conjunto de linters na compilação).
Revisado por Chris St. John·Última atualização: 18 de jul. de 2026