MoinMoin Logo
  • Comments
  • Immutable Page
  • Menu
    • Navigation
    • RecentChanges
    • FindPage
    • Local Site Map
    • Help
    • HelpContents
    • HelpOnMoinWikiSyntax
    • Display
    • Attachments
    • Info
    • Raw Text
    • Print View
    • Edit
    • Load
    • Save
  • Login

Navigation

  • Start
  • Sitemap
Revision 3 as of 2020-06-20 23:01:42
  • golang

golang

Go programmmig language

package main

import "fmt"

func main() {
        fmt.Println("Hello, 世界")
}

WebAssembly

  • On debian buster
    • sudo apt install golang # go version go1.11.6 linux/amd64
    • sudo apt install golang-src
  • mkdir ~/wasmgotest

build.sh

go build -o main main.go
GOOS=js GOARCH=wasm go build -o main.wasm main.go

index.html

<html>
        <head>
                <meta charset="utf-8"/>
                <script src="wasm_exec.js"></script>
                <script>
                        const go = new Go();
                        WebAssembly.instantiateStreaming(fetch("main.wasm"), go.importObject).then((result) => {
                                go.run(result.instance);
                        });
                </script>
        </head>
        <body>
        <h1 id="datetimeHeading">5555</h1>
        <canvas id="myCanvas" width="200" height="100" style="border:1px solid #000000;">
        </canvas> 
        </body>
</html>

main.go

package main

//import "fmt"
import "time"
import "syscall/js"

func showTime(){
  for x := 0; ; x++ { // infinite loop
    currentTime := time.Now()
    // console.log in the browser
    //fmt.Printf("Hello, WebAssembly %s  ! \n" , currentTime.String() )
    document := js.Global().Get("document")
    document.Call("getElementById", "datetimeHeading").Set("innerHTML", currentTime.String())
    //document.getElementById("datetimeHeading").innerHTML="aaa"
    time.Sleep( 2 * time.Second  )
  }
}

func main() {
  go showTime()  // go routine executes the called function as a lightweight thread 

  document := js.Global().Get("document")
  c := document.Call("getElementById","myCanvas")
  ctx := c.Call("getContext","2d")
  ctx.Call("beginPath")
  ctx.Call("arc","95", "50", "40", "0", "6.283")
  ctx.Call("stroke");

  time.Sleep(24*time.Hour)
}
  • cp /usr/share/go-1.11/misc/wasm/wasm_exec.js .
  • Check on the browser file:///home/vitor/wasmgotest/index.html

  • MoinMoin Powered
  • Python Powered
  • GPL licensed
  • Valid HTML 4.01