>  기사  >  백엔드 개발  >  컴파일된 Go WASM 파일에서 함수 이름을 어떻게 내보낼 수 있나요?

컴파일된 Go WASM 파일에서 함수 이름을 어떻게 내보낼 수 있나요?

Patricia Arquette
Patricia Arquette원래의
2024-10-31 03:28:02473검색

How can I export function names in compiled Go WASM files?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.