ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • golang wasm - 2
    Go lang 실습 2024. 3. 6. 17:29
    반응형

    자바스크립트에서 고의 함수를 호출하는 예...

    다른 언어를 넘나들기 위해서는 자료형 부분이 가장 먼저 신경 쓰이는데.. 

    package main
    
    import (
    	"fmt"
    	"syscall/js"
    )
    
    func main() {
    	js.Global().Set("greet", js.FuncOf(
            func(this js.Value, args []js.Value) interface{} {
    		    if len(args) == 0 {
    			    return "Hello, World!"
    		    }
    		return fmt.Sprintf("Hello, %s!", args[0].String())
    	}))
    
    	select {}
    }

    js.Value라는 자료형을 이용해서 args를 받고..
    함수의 결과는 빈 인터페이스를 이용해서 보내는 군...

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>Go WebAssembly Example</title>
    </head>
    <body>
        <script src="wasm_exec.js"></script>
        <script>
            async function runWasm() {
                const go = new Go();
                const result = await WebAssembly.instantiateStreaming(
                    fetch("main.wasm"), go.importObject
                );
                go.run(result.instance);
    
                console.log(window.greet());
                console.log(window.greet("John"));
            }
    
            runWasm();
        </script>
    </body>
    </html>

    문자열을 주고 받는 건 알겠는데...
    배열이나 맵을 저비용으로 빠르게 주고 받는 방법은 없으려나...
    일단 JSON으로 주고 받으면 되지만...

    반응형
Designed by Tistory.