Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengeksport Semua Fungsi yang Diingini Apabila Menyusun Program Go ke WASM?

Bagaimana untuk Mengeksport Semua Fungsi yang Diingini Apabila Menyusun Program Go ke WASM?

Linda Hamilton
Linda Hamiltonasal
2024-10-28 19:08:02455semak imbas

How to Export All Desired Functions When Compiling a Go Program to WASM?

Mengeksport Fungsi dalam Go WASM

Masalah:

Apabila menyusun atur cara Go ke WASM, hanya subset daripada fungsi yang dieksport dikekalkan. Ini boleh menjadi masalah jika anda perlu mengakses fungsi tertentu daripada JavaScript.

Soalan:

Bagaimanakah kita boleh mengeksport semua fungsi yang dikehendaki semasa menyusun atur cara Go ke WASM?

Jawapan:

Menggunakan TinyGo:

Jika anda bercadang untuk menumpukan pada pembangunan WASM, pertimbangkan untuk menggunakan TinyGo. TinyGo menyediakan //arahan komen eksport yang membolehkan anda menentukan fungsi yang harus dieksport.

<code class="go">// This function is exported to JavaScript, so can be called using
// exports.multiply() in JavaScript.
//export multiply
func multiply(x, y int) int {
    return x * y;
}</code>

Menggunakan Pengkompil Standard Go (Percubaan):

pengkompil standard Go mempunyai perbincangan berterusan tentang mereplikasi ciri eksport TinyGo. Satu penyelesaian yang berpotensi adalah untuk menetapkan fungsi ke ruang nama global JS menggunakan js.Global().Set(...).

Contoh:

<code class="go">package main

import (
    "github.com/gopherjs/gopherjs/js"
)

func main() {
    js.Global().Set("MyFunc", MyFunc)
}

func MyFunc() {
    fmt.Println("MyFunc called from JavaScript")
}</code>

Kompilasi:

Kompilasi program Go ke WASM menggunakan arahan berikut:

<code class="sh">GOOS=js GOARCH=wasm go build -o main.wasm main.go</code>

Ini sepatutnya mengeksport fungsi MyFunc dan menjadikannya boleh diakses oleh JavaScript.

Atas ialah kandungan terperinci Bagaimana untuk Mengeksport Semua Fungsi yang Diingini Apabila Menyusun Program Go ke WASM?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn