婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Go Plugins插件的實現方式

Go Plugins插件的實現方式

熱門標簽:武漢百應人工智能電銷機器人 百度地圖標注位置網站 智能語音電銷的機器人 如何利用高德地圖標注家 上海企業外呼系統排名 電腦外呼系統輻射大嗎 揚州電銷外呼系統軟件 開通400電話申請流程 400手機電話免費辦理

官方實現

golang 1.8 及以上版本提供了一個創建共享庫(shared object)的新工具,稱為 Plugins。目前 Plugins 僅在 Linux、FreeBSD 和 macOS 上受支持,且只支持 golang 調用。​

使用示例,定義一個 plugin.go

package main

import (
 "log"
)

func init() {
 log.Println("plugin init")
}

type SayHello struct {
}

func (s *SayHello) CallMe(name string) string {
 log.Println("hello ", name)
 return "I am plugin"
}

// SayHelloPlugin 導出變量
var SayHelloPlugin SayHello

使用 -buildmode=plugin 模式編譯出 plugin.so 共享庫

go build -o plugin.so -buildmode=plugin plugin.go

main.go 中調用插件:

package main

import (
 "log"
 "plugin"
)

type CustomPlugin interface {
 CallMe(name string) string
}

func main() {
 // 打開插件(并發安全)
 p, err := plugin.Open("plugin.so")
 if err != nil {
  panic(err)
 }
 // 在插件中搜索可導出的變量或函數
 sayHelloPlugin, err := p.Lookup("SayHelloPlugin")
 if err != nil {
  panic(err)
 }
 // 斷言插件類型
 if sayHello, ok := sayHelloPlugin.(CustomPlugin); ok {
  log.Println(sayHello.CallMe("togettoyou"))
 }
}
go run main.go

# 輸出
2021/07/28 17:07:21 plugin init
2021/07/28 17:07:21 hello  togettoyou
2021/07/28 17:07:21 I am plugin

定義一個插件總結:

  • package 包名需要定義為 main
  • 必須有可導出的變量或函數
  • 不需要 main 函數
  • 插件加載時會先執行 init 函數

Traefik Yaegi 實現

Yaegi 是 Traefik 開源的 Go 解釋器。Traefik 自身的插件實現就是使用的 Yaegi 。​

Yaegi 運行在 Go 運行時之上,可以直接作為嵌入式解釋器,或使用交互式 shell ,解釋運行 Go 代碼。不過只支持 Go 1.15 和 Go 1.16(最新的 2 個主要版本)。

創建代碼目錄結構如下:

│  go.mod
│  go.sum
│  main.go
│
└─plugin
    └─src
        └─hello
                go.mod
                hello.go

這里有個注意點,Yaegi 的插件需要放在 src 目錄下。​

其中 hello.go 代碼:

package hello

import (
 "fmt"
)

func init() {
 fmt.Println("hello plugin init")
}

func CallMe(msg string) string {
 fmt.Println(msg)
 return "I am plugin"
}

main.go 代碼:

package main

import (
 "fmt"
 "github.com/traefik/yaegi/interp"
 "github.com/traefik/yaegi/stdlib"
)

func main() {
 // 初始化解釋器
 i := interp.New(interp.Options{GoPath: "./plugin/"})

 // 插件需要使用標準庫
 if err := i.Use(stdlib.Symbols); err != nil {
  panic(err)
 }

 // 導入 hello 包
 if _, err := i.Eval(`import "hello"`); err != nil {
  panic(err)
 }

 // 調用 hello.CallMe
 v, err := i.Eval("hello.CallMe")
 if err != nil {
  panic(err)
 }
 callMe := v.Interface().(func(string) string)
 fmt.Println(callMe("togettoyou"))
}
go run main.go

# 輸出
hello plugin init
togettoyou
I am plugin

到此這篇關于Go Plugins插件的實現方式的文章就介紹到這了,更多相關Go Plugins插件內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 成功安裝vscode中go的相關插件(詳細教程)
  • VSCode配置Go插件和第三方拓展包的詳細教程
  • VSCode必裝Go語言以下插件的思路詳解
  • 解決vscode中golang插件依賴安裝失敗問題
  • 使用jQuery.Qrcode插件在客戶端動態生成二維碼并添加自定義Logo

標簽:張掖 黑龍江 江西 宜賓 嘉峪關 延邊 新余 武漢

巨人網絡通訊聲明:本文標題《Go Plugins插件的實現方式》,本文關鍵詞  Plugins,插件,的,實現,方式,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Go Plugins插件的實現方式》相關的同類信息!
  • 本頁收集關于Go Plugins插件的實現方式的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    一区二区三区在线观看视频| 国产一区二区日韩精品| 欧美综合亚洲图片综合区| 日本美女一区二区三区视频| 国产精品色婷婷久久58| 欧美亚洲禁片免费| 99精品桃花视频在线观看| 国产麻豆视频一区| 六月丁香综合在线视频| 亚洲成人免费视| 怡红院av一区二区三区| 国产精品福利一区| 国产嫩草影院久久久久| 久久人人超碰精品| 久久精品网站免费观看| 久久久九九九九| 久久精品无码一区二区三区| 精品国产一区二区三区av性色 | 国产麻豆视频精品| 国产乱码精品一区二区三区av| 麻豆精品新av中文字幕| 国内精品伊人久久久久av影院 | 色综合久久综合网| 夫妻av一区二区| 成人国产免费视频| 丁香亚洲综合激情啪啪综合| 国产91精品在线观看| jlzzjlzz亚洲女人18| 国产成人免费av在线| 国产精品亚洲第一| a在线欧美一区| 欧美一个色资源| 91精品国产综合久久精品图片| 欧美主播一区二区三区| 欧美一级国产精品| 久久久久久久久久久久久久久99 | 亚洲国产乱码最新视频| 亚洲成人tv网| 免费观看在线色综合| 福利电影一区二区三区| 91免费版在线看| 欧美性大战久久久| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 欧美无砖专区一中文字| 6080国产精品一区二区| 久久精品免视看| 亚洲欧洲另类国产综合| 亚洲一区二区黄色| 午夜激情久久久| 精品在线免费观看| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 国内精品免费**视频| 久久99精品久久久久久| 99国产一区二区三精品乱码| 欧美肥妇bbw| 中文乱码免费一区二区| 丝袜美腿亚洲一区二区图片| 国产裸体歌舞团一区二区| 欧洲精品视频在线观看| 久久亚洲综合色一区二区三区| 亚洲人xxxx| 国产成人综合网| 欧美高清dvd| 中文字幕在线不卡视频| 日韩一区日韩二区| 精品久久久久久久久久久久包黑料| 国产精品天天看| 老司机午夜精品99久久| a亚洲天堂av| wwwwxxxxx欧美| 亚洲成人一区在线| 成人免费视频国产在线观看| 精品国产乱码久久久久久蜜臀| 亚洲免费在线看| 精品在线观看视频| 欧美一区二区在线不卡| 亚洲久草在线视频| 国产夫妻精品视频| 日韩一区二区免费在线电影| 中文文精品字幕一区二区| 看片的网站亚洲| 在线亚洲精品福利网址导航| 国产精品丝袜一区| 日本中文一区二区三区| 欧美日本精品一区二区三区| 一区二区三区蜜桃| 一本大道av一区二区在线播放| 欧美激情综合在线| 亚洲一区二区欧美| 99vv1com这只有精品| 精品国产一区二区三区不卡| 美女视频网站久久| 欧美日韩亚洲综合在线 | 经典一区二区三区| 久久婷婷国产综合国色天香| 99re视频这里只有精品| 欧美午夜精品电影| 国产盗摄视频一区二区三区| 欧美亚洲国产bt| 日韩高清在线不卡| 国产精品久久免费看| 欧美日本一区二区| 国产精品欧美一级免费| 国产激情视频一区二区在线观看| 精品视频在线看| 人人精品人人爱| 欧美性猛片xxxx免费看久爱| 国产精品视频一二| 国产精品羞羞答答xxdd| 久久久国产一区二区三区四区小说| 亚洲电影第三页| 欧美视频一区在线| 青青草伊人久久| 久久精品在这里| 久久99国产精品尤物| 色欧美片视频在线观看| 亚洲国产wwwccc36天堂| 99久久精品国产毛片| 国产人成一区二区三区影院| 国产一区二三区| 欧美高清在线精品一区| 国产一区三区三区| 国产精品第13页| 欧美综合亚洲图片综合区| 久久精品国产99国产精品| 亚洲精品一区二区精华| 中文乱码免费一区二区| 五月综合激情日本mⅴ| 国产九色精品成人porny| 欧美色偷偷大香| 欧美视频三区在线播放| 日韩欧美视频一区| 亚洲国产精品一区二区www在线| 一区二区三区在线视频免费观看| 日本在线不卡一区| 一本大道久久a久久精二百 | 国产精品久久久久久亚洲毛片 | 日韩欧美aaaaaa| 精品一二三四在线| 欧美精品一区二区三区蜜臀| 高清在线观看日韩| 夜夜嗨av一区二区三区网页| 久久你懂得1024| 欧美日韩国产首页| 国内成人精品2018免费看| 1区2区3区国产精品| 精品久久久久久久久久久院品网| 99热精品国产| 精品无人码麻豆乱码1区2区| 亚洲欧美激情视频在线观看一区二区三区 | 在线影院国内精品| 极品美女销魂一区二区三区免费| 亚洲蜜臀av乱码久久精品蜜桃| 欧美不卡激情三级在线观看| 99精品视频在线免费观看| 久久国产三级精品| 亚洲影视在线播放| 国产精品欧美综合在线| 日韩欧美国产系列| 欧美理论在线播放| 日本韩国视频一区二区| a在线播放不卡| 成人一区二区三区| 国产精品456| 国产乱人伦偷精品视频免下载| 国内不卡的二区三区中文字幕| 午夜精品久久久久久久99樱桃| 国产精品福利一区二区三区| 日本一区二区三区dvd视频在线| 日韩午夜精品视频| 欧美日韩夫妻久久| 欧美精品一卡二卡| 亚洲不卡在线观看| 中文字幕成人网| 精品国产免费人成电影在线观看四季 | 日韩片之四级片| 国产精品香蕉一区二区三区| 夜夜操天天操亚洲| 久久一区二区三区四区| 精品国产乱码久久| 日本va欧美va精品| 亚洲va中文字幕| 亚洲二区在线观看| 香蕉成人啪国产精品视频综合网| 亚洲日穴在线视频| 亚洲综合色区另类av| 亚洲一区二区三区四区在线观看| 中文字幕精品三区| 久久婷婷色综合| 久久久不卡网国产精品二区| 国产日韩欧美制服另类| xnxx国产精品| 国产精品久久久久久久久久久免费看 | 97久久久精品综合88久久| 国产宾馆实践打屁股91| 99久久国产综合精品女不卡 | 911精品国产一区二区在线| 69精品人人人人| 精品国产伦一区二区三区观看方式 | 亚洲视频在线一区|