国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Golang - 在 Golang 中運(yùn)行 JavaScript

在 Golang 中運(yùn)行 JavaScript

2022-01-22 23:34未聞Codekingname Golang

我們知道,在 Python 里面,如果你要運(yùn)行一段 JavaScript,你可以使用execJS這種第三方庫。那么在 Golang 里面,你想運(yùn)行 JavaScript 的時(shí)候又應(yīng)該怎么辦呢?

我們知道,在 Python 里面,如果你要運(yùn)行一段 JavaScript,你可以使用execJS這種第三方庫。那么在 Golang 里面,你想運(yùn)行 JavaScript 的時(shí)候又應(yīng)該怎么辦呢?

在 Golang 中運(yùn)行 JavaScript

最近我發(fā)現(xiàn)一個(gè)使用 Golang 開發(fā)的 JavaScript 引擎:Goja[1]。它實(shí)現(xiàn)了ES 5.1的所有語法和大部分的ES 6語法,比 Python 的execJS要厲害得多。在一定程度上和特定場(chǎng)景下,它可以完全替代Chrome 的 V8引擎。

我們來看看如使用它運(yùn)行一段 JavaScript 代碼。首先,我來寫一段遞歸版的 JavaScript 代碼計(jì)算斐波那契數(shù)列:

function fib(n) {
    if (n === 1 || n === 2) {
        return 1 
    }
    return fib(n - 1) + fib(n - 2)
}

 

 

直接在瀏覽器上面運(yùn)行的效果如下:

 

在 Golang 中運(yùn)行 JavaScript

現(xiàn)在,我們來安裝這個(gè)Goja:

go get github.com/dop251/goja

接下來我們?cè)?Go 中運(yùn)行 js 代碼:

package main

import (
    "fmt"

    "github.com/dop251/goja"
)

func main() {

    const script = `
    function fib(n) {
        if (n === 1 || n === 2) {
            return 1 
        }
        return fib(n - 1) + fib(n - 2)
    }
    `
    vm := goja.New()
    _, err := vm.RunString(script)
    if err != nil {
        fmt.Println("JS代碼有問題!")
        return
    }
    var fn func(int32) int32
    err = vm.ExportTo(vm.Get("fib"), &fn)
    if err != nil {
        fmt.Println("Js函數(shù)映射到 Go 函數(shù)失敗!")
        return
    }
    fmt.Println("斐波那契數(shù)列第30項(xiàng)的值為:", fn(30))
}

運(yùn)行效果如下圖所示:

在 Golang 中運(yùn)行 JavaScript

我們來解釋一下上面代碼的意思。請(qǐng)大家關(guān)注截圖中的代碼行號(hào)。第19行,我們創(chuàng)建了一個(gè) JavaScript 的虛擬機(jī)。然后在第20行,把這個(gè)函數(shù)加載到了虛擬機(jī)當(dāng)中。

第25行,我們創(chuàng)建了一個(gè)變量,這個(gè)變量是函數(shù)類型,這個(gè)函數(shù)接收一個(gè) int32作為參數(shù),并返回另一個(gè)int32類型的數(shù)據(jù)。

第26行,我們把 Golang 里面的這個(gè)函數(shù)變量與 JavaScript 里面的函數(shù)fib關(guān)聯(lián)起來,這樣我們就能直接寫 Go 代碼來調(diào)用 JavaScript 代碼了。

第31行,我們像調(diào)用普通的 Go 函數(shù)一樣傳入?yún)?shù),然后獲得結(jié)果。

有一些同學(xué)在做爬蟲的時(shí)候,需要運(yùn)行一段 JavaScript 代碼來生成一段 token,那你不妨試一試Goja,它的速度肯定要比你用Python 版本的快很多。

來源鏈接:

http://mp.weixin.qq.com/s?__biz=MzI2MzEwNTY3OQ==&mid=2648984382&idx=1&sn=83511845f226b84678415e137e82fc93&chksm=f25016dec5279fc8755809e1e3d7dd51d760f73a2bde8123f51b13f6c300b8de7011a9742c4d&mpshare=1&scene=23&srcid=0118l7VER7fPhaIk3wWGbNlu&sharer_sharetime=1642509422986&sharer_shareid=9603544ecd5d7f3dc66603ae089636f4#rd

延伸 · 閱讀

精彩推薦
  • Golanggolang 通過ssh代理連接mysql的操作

    golang 通過ssh代理連接mysql的操作

    這篇文章主要介紹了golang 通過ssh代理連接mysql的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧...

    a165861639710342021-03-08
  • GolangGolang通脈之?dāng)?shù)據(jù)類型詳情

    Golang通脈之?dāng)?shù)據(jù)類型詳情

    這篇文章主要介紹了Golang通脈之?dāng)?shù)據(jù)類型,在編程語言中標(biāo)識(shí)符就是定義的具有某種意義的詞,比如變量名、常量名、函數(shù)名等等,Go語言中標(biāo)識(shí)符允許由...

    4272021-11-24
  • Golanggo語言制作端口掃描器

    go語言制作端口掃描器

    本文給大家分享的是使用go語言編寫的TCP端口掃描器,可以選擇IP范圍,掃描的端口,以及多線程,有需要的小伙伴可以參考下。 ...

    腳本之家3642020-04-25
  • Golanggolang的httpserver優(yōu)雅重啟方法詳解

    golang的httpserver優(yōu)雅重啟方法詳解

    這篇文章主要給大家介紹了關(guān)于golang的httpserver優(yōu)雅重啟的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,...

    helight2992020-05-14
  • Golanggo日志系統(tǒng)logrus顯示文件和行號(hào)的操作

    go日志系統(tǒng)logrus顯示文件和行號(hào)的操作

    這篇文章主要介紹了go日志系統(tǒng)logrus顯示文件和行號(hào)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧...

    SmallQinYan12302021-02-02
  • GolangGolang中Bit數(shù)組的實(shí)現(xiàn)方式

    Golang中Bit數(shù)組的實(shí)現(xiàn)方式

    這篇文章主要介紹了Golang中Bit數(shù)組的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧...

    天易獨(dú)尊11682021-06-09
  • Golanggolang json.Marshal 特殊html字符被轉(zhuǎn)義的解決方法

    golang json.Marshal 特殊html字符被轉(zhuǎn)義的解決方法

    今天小編就為大家分享一篇golang json.Marshal 特殊html字符被轉(zhuǎn)義的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧 ...

    李浩的life12792020-05-27
  • Golanggolang如何使用struct的tag屬性的詳細(xì)介紹

    golang如何使用struct的tag屬性的詳細(xì)介紹

    這篇文章主要介紹了golang如何使用struct的tag屬性的詳細(xì)介紹,從例子說起,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看...

    Go語言中文網(wǎng)11352020-05-21
主站蜘蛛池模板: 91麻豆精品国产91久久久资源速度 | 日韩中文字幕在线视频 | 亚洲综合在线播放 | 亚洲激情视频在线播放 | 久久久国产精品入口麻豆 | 国产高清视频在线 | 国产精品久久久久久久9999 | 国产精品日产欧美久久久久 | 国产高清在线看 | 国内精品一区二区三区 | 国产成人精品网站 | 免费a级毛片在线观看 | 夜夜草视频 | 欧美午夜一区二区三区免费大片 | 欧美成人区 | 日本在线不卡视频 | 看av网站 | 日韩成人在线网 | 欧美在线亚洲 | 狠狠色狠狠色合久久伊人 | 欧美国产精品一区二区 | 国产免费一区二区 | 国产一区二区三区免费看 | 国产 日韩 欧美 中文 在线播放 | 国产91色| 久久精品一区二区国产 | 欧美成人一区二区三区片免费 | 午夜精品久久久久久久白皮肤 | 黄色网址免费 | 久久久www | 成人国产精品 | 久久久官网| 国产黄色一级片视频 | 一本大道色卡1卡2卡3 | 亚洲第一黄色网 | 亚洲免费视频一区二区 | 欧美午夜一区二区三区免费大片 | 午夜成人免费影院 | 亚洲一区二区精品 | 久久国产精品一区二区三区 | 精品亚洲一|