Descripción general de WebAssembly (consulte la sección WebAssembly y TinyGo)
Go puede tener como objetivo WebAssembly sin cgo: la ruta del navegador utiliza GOOS=js GOARCH=wasm con syscall/js, y la ruta del servidor/borde utiliza GOOS=wasip1 GOARCH=wasm para hosts WASI.
cgo no está disponible en los objetivos de wasm, por lo que la interconexión se traslada a puentes de JavaScript, importaciones de WASI o TinyGo para compilaciones restringidas.
WebAssembly es una alternativa portátil a cgo nativo cuando implementa en navegadores, entornos de ejecución de borde o complementos aislados.
Los pipelines de compilación completos, la optimización del tamaño y las comparaciones de hosts se encuentran en la sección WebAssembly y TinyGo: esta página orienta a los lectores de cgo sobre cuándo cambiar.
Esperar controladores cgo en wasm - La compilación falla o las etiquetas excluyen paquetes. Solución: Controladores puros de Go y archivos de compilación específicos de wasm.
Ejecutar gc wasm en el navegador sin wasm_exec.js - Errores del cargador. Solución: Siga el cableado del wiki de Go wasm para su empaquetador.
Asumir net completo en js/wasm - Restringido por los entornos aislados del host. Solución: Use puentes fetch/WebSocket documentados para syscall/js.
Binarios wasm enormes de importaciones de stdlib - Cargas web lentas. Solución: TinyGo o recorte de dependencias; consulte la guía de tamaño en la sección WebAssembly.
Mezclar etiquetas wasip1 y js - Conjuntos de llamadas al sistema diferentes. Solución: Paquetes main separados o etiquetas de compilación explícitas por objetivo.
Ignorar la matriz de capacidades del host - Las vistas previas de WASI difieren entre los tiempos de ejecución. Solución: Pruebe en las versiones de wazero/wasmtime que envíe.
Versiones de pila: Esta página fue escrita para Go 1.26.x (predeterminado Green Tea GC, modernizadores de go fix - verifique el parche en la compilación), chi (última versión - verifique en la compilación), gin (última versión - verifique en la compilación), echo (última versión - verifique en la compilación), google.golang.org/grpc (última versión - verifique en la compilación), sigs.k8s.io/controller-runtime (última versión - verifique en la compilación), kubebuilder (última versión - verifique en la compilación), tinygo (última versión - verifique los objetivos de placa en la compilación), wazero (última versión - verifique en la compilación) y golangci-lint (última versión - verifique el conjunto de linters en la compilación).
Revisado por Chris St. John·Última actualización: 18 jul 2026