首页 > 其他分享 >Golang简单使用wasm

Golang简单使用wasm

时间:2023-11-07 17:34:10浏览次数:34  
标签:num1 num2 js Golang wasm result 简单 go

go代码

package main

import (
	"syscall/js"
)

func addxxxx(this js.Value, args []js.Value) interface{} {
	if len(args) != 2 {
		return "Invalid number of arguments. Expected 2."
	}

	num1 := args[0].Float()
	num2 := args[1].Float()
	result := num1 + num2
	return result
}

func main() {
	js.Global().Set("addxxxx", js.FuncOf(addxxxx))
	done := make(chan struct{}, 0)
	<-done
}

把编译后的wasm复制到静态文件目录/path/to/static,类似于js,css。。。

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

将 Golang SDK 中的 wasm_exec.js 复制到工作目录 /path/to/static 改成你的路径

cp "$GOROOT/misc/wasm/wasm_exec.js" /path/to/static

前端html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Go WebAssembly Calculator</title>
    <script src="./wasm_exec.js"></script> //加载刚才复制的js
    <script>
        // 在页面加载完毕后执行
        window.onload = function() {
            const go = new Go(); // wasm_exec.js 中的定义
            WebAssembly.instantiateStreaming(fetch('./main2.wasm'), go.importObject)
                .then(res => {
                    go.run(res.instance); // 执行 go main 方法
                });
        };

        function calculate() {
            const num1 = parseFloat(document.getElementById("num1").value);
            const num2 = parseFloat(document.getElementById("num2").value);
            console.log(window)
            const result = window.addxxxx(num1, num2);

            document.getElementById("result").innerHTML = result;
            return new Promise(()=>{

            })
        }
    </script>
</head>
<body>
<h1>Simple Calculator</h1>

 <input type="number" id="num1" value="1" placeholder="Number 1"> <br>
    <input type="number" id="num2" value="2" placeholder="Number 2"><br>

<button onclick="calculate()">Calculate</button>

<h2>Result: <span id="result"></span></h2>

</body>
</html>

标签:num1,num2,js,Golang,wasm,result,简单,go
From: https://www.cnblogs.com/qcy-blog/p/17815484.html

相关文章

  • 手写简单生产者消费者阻塞队列
    主要实现生产者定时生产,消费者只要队列消息中有就消费。importjava.util.*;importjava.util.concurrent.atomic.AtomicInteger;importjava.util.concurrent.locks.Condition;importjava.util.concurrent.locks.ReentrantLock;publicclassProductConsumerQueue<E>{......
  • Golang实现简单的后门程序
    packagemainimport( "io" "net" "os/exec")funcmain(){ var( listenernet.Listener errerror connnet.Conn ) listener,err=net.Listen("tcp",":8080") iferr!=nil{ panic(e......
  • Golang 基础(一)
    1.packagemanagementgopackagemanagement1.history2.gomodulesGOPATH:Unifiedpackagestoragepath-notsupportversioncontrolofdependencypackagesGOPATHmode:useGOPATHtomanageGOPATH:thepath不是使用GOPATH模式就一定是使用GOPATH路径GOROOT是go......
  • java怎么去入门,用java怎么开发一个简单的安卓程序?
    Java是一种广泛使用的编程语言,特别适合于安卓应用开发。如果你想入门Java并使用它来开发安卓应用,你可以遵循以下步骤:入门Java学习Java的基础知识:数据类型、变量、运算符控制流(if/else语句、switch语句、循环)方法(函数)面向对象编程(类、对象、继承、多态性)异常处理集合框......
  • java实现多线程执行的方法,举个简单的例子
    在Java中实现多线程可以通过以下两种主要方式:继承 Thread 类实现 Runnable 接口下面我将通过这两种方式分别提供一个简单的例子,并解释每一步的执行过程。继承 Thread 类这是通过创建 Thread 类的子类,并覆盖其 run 方法来实现的。//第一步:创建一个扩展自Thread......
  • js substring截取字符串,不信你看不懂,简单案例分享
     在JavaScript中,substring 方法用于截取字符串。它返回字符串的一个子集,即原始字符串中介于两个指定下标之间的字符。substring 方法的语法如下:str.substring(indexStart[,indexEnd])indexStart:必需的参数,表示要提取的第一个字符的下标(位置)。如果 indexStart 大于 ind......
  • 如何通过java程序访问数据库,举个简单的例子,提供执行过程
    要通过Java程序访问数据库,你需要使用JDBC(JavaDatabaseConnectivity)API,它是一个用于执行SQL语句的JavaAPI。以下是使用JDBC访问数据库的基本步骤,以及一个简单的示例,该示例连接到数据库并执行一个查询。步骤:加载数据库驱动:这是告诉JVM使用哪个数据库驱动。建立连接:使用数据库......
  • 记录--Vue3基于Grid布局简单实现一个瀑布流组件
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助前言在学习Grid布局之时,我发现其是CSS中的一种强大的布局方案,它将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局,在刷某书和某宝首页时,我们发现其展示方式就是一种瀑布流,是一种流行的网站页面布局......
  • Oracledb_exporter 获取表大小信息的简单方法
    Oracledb_exporter获取表大小信息的简单方法背景用我儿子的现状作为背景:我爱学习,学习让我妈快乐.下载exporterexporter可以在github上面下载最新版本是0.5.1https://github.com/iamseth/oracledb_exporter可以直接下载release好的二进制,也可以dockerpull......
  • 利用python简单采集公众号
    今天用python写一个采集公众号文章的爬虫,目前还没有做具体的优化,只供学习,一起来看看吧。```pythonimportrequestsfrombs4importBeautifulSoupproxy_host="www.duoip.cn"proxy_port=8000url="https://mp.weixin.qq.com/s?"#微信公众号文章网址headers={"User-A......