这里要用到otto---Go语言实现的JavaScript 解释器(github.com/robertkrimen/otto)

假设plugins.js里的内容有:

function addnum(a, b) {
    
    return a + add5(b)
}

function add5(a) {
  return a + 5
}
要调用addnum函数,golang内容为:
	f, err := os.Open("plugins.js")
	if err != nil {
		panic(err)
	}

	defer f.Close()

	buff := bytes.NewBuffer(nil)

	if _, err := buff.ReadFrom(f); err != nil {
		panic(err)
 	}
	runtime := otto.New()
	if _, err := runtime.Run(buff.String()); err != nil {
		panic(err)
	}

	a:= 1 
	b:= 2
	jsa, err := runtime.ToValue(a)
	if err != nil {
		panic(err)
	}
	jsb, err := runtime.ToValue(userid)
	if err != nil {
		panic(err)
	}
	result, err := runtime.Call("addnum", nil, jsa, jsb)
	if err != nil {
		panic(err)
	}
	out, err := result.ToInterger()
	if err != nil {
		panic(err)
	}
得到的结果out会是8