Go WASM에서 함수 이름 내보내기
컴파일된 Go WASM 파일에서 함수 이름을 내보내고 싶습니다. 기본적으로 이러한 이름은 결과 .wasm 파일에 표시되지 않으므로 외부 컨텍스트에서 호출하기가 어렵습니다.
TinyGo의 //export 지시문
TinyGo, 임베디드 및 WASM 환경에 맞춰진 Go 컴파일러는 문제에 대한 솔루션을 제공합니다. 컴파일 중에 함수 이름을 유지하는 //export 지시문을 지원합니다. 예를 들면 다음과 같습니다.
<code class="go">//export multiply func multiply(x, y int) int { return x * y; }</code>
이 지시문은 컴파일된 WASM 파일에서 곱하기 함수가 이름으로 계속 액세스할 수 있도록 보장합니다.
표준 Go 컴파일러 솔루션
표준 Go 컴파일러의 경우 유사한 기능을 추가하는 것에 대한 논의가 진행 중입니다. 그러나 현재 js.Global().Set(...)을 사용하여 내보낸 함수를 JS 전역 네임스페이스로 설정하면 이를 달성할 수 있습니다.
import ( "syscall/js" ) func main() { js.Global().Set("multiply", exportedMultiply) } //export multiply func exportedMultiply(this js.Value, args []js.Value) interface{} { if len(args) != 2 { return "Invalid number of arguments" } x, y := int(args[0].Int()), int(args[1].Int()) return x * y }
이 예에서 곱셈은 JS로 내보내집니다. 전역 범위로, imports.multiply()를 사용하여 JavaScript에서 호출할 수 있습니다.
Go WASM 파일을 빌드하려면 다음 명령을 사용하세요.
GOOS=js GOARCH=wasm go build -o main.wasm
위 내용은 컴파일된 Go WASM 파일에서 함수 이름을 어떻게 내보낼 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!