婷婷综合国产,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
    一区二区三区欧美在线观看| 欧美一区二区网站| 久久99久国产精品黄毛片色诱| 成人欧美一区二区三区在线播放| 精品久久一二三区| 精品国产百合女同互慰| 精品国产三级电影在线观看| 欧美tickle裸体挠脚心vk| 精品99一区二区三区| 久久久久97国产精华液好用吗| 2023国产一二三区日本精品2022| 日韩精品一区国产麻豆| 久久久久久麻豆| 日本一二三不卡| 亚洲摸摸操操av| 午夜私人影院久久久久| 麻豆成人91精品二区三区| 蜜桃久久久久久| 国产美女精品在线| 成人一级片在线观看| 色婷婷精品久久二区二区蜜臂av| 欧美性生活一区| 日韩亚洲欧美在线| 国产区在线观看成人精品| 亚洲欧美日韩国产成人精品影院 | 丝袜a∨在线一区二区三区不卡 | 欧美精品一区二区久久婷婷| 久久久噜噜噜久久中文字幕色伊伊| 久久久久久久久免费| 亚洲欧美日韩国产综合| 日韩精品午夜视频| 成人午夜激情片| 欧美日韩亚洲综合在线| 国产欧美一区二区在线| 亚洲午夜久久久久久久久久久| 琪琪一区二区三区| 色综合久久天天综合网| 精品日产卡一卡二卡麻豆| 亚洲激情六月丁香| 国产精品123区| 欧美日韩国产影片| 国产欧美久久久精品影院| 日韩影院在线观看| 91蜜桃传媒精品久久久一区二区| 日韩一区二区三区视频| 亚洲自拍偷拍麻豆| 成人v精品蜜桃久久一区| 91精品国产高清一区二区三区| 欧美激情在线免费观看| 久久精品国产一区二区三| 色婷婷精品大视频在线蜜桃视频 | 91久久久免费一区二区| 久久免费美女视频| 麻豆一区二区三| 欧美日韩一区中文字幕| 亚洲欧洲精品一区二区精品久久久 | 秋霞午夜鲁丝一区二区老狼| 99精品国产视频| 国产欧美日本一区视频| 久久电影网站中文字幕| 6080午夜不卡| 亚洲国产成人91porn| 日本黄色一区二区| 亚洲人成小说网站色在线| www.日韩在线| 欧美极品少妇xxxxⅹ高跟鞋| 国产美女娇喘av呻吟久久| 日韩写真欧美这视频| 青青草精品视频| 欧美精品国产精品| 午夜精品一区二区三区免费视频| 91蜜桃在线观看| 一区av在线播放| 色婷婷一区二区三区四区| 综合婷婷亚洲小说| 色综合久久久久综合体桃花网| 国产精品传媒入口麻豆| 91亚洲精品久久久蜜桃| 亚洲尤物在线视频观看| 欧美日韩午夜在线| 日韩不卡一二三区| 日韩一区二区三区av| 美美哒免费高清在线观看视频一区二区 | 欧美三电影在线| 午夜亚洲国产au精品一区二区| 欧美日本在线看| 蜜臀av一区二区在线免费观看| 日韩午夜在线观看| 国产精品资源在线| 国产精品二三区| 欧美在线免费视屏| 美女www一区二区| 久久久久久久久97黄色工厂| 成人va在线观看| 亚洲高清在线精品| 精品精品国产高清一毛片一天堂| 国产精品一区二区果冻传媒| 综合色中文字幕| 欧美高清一级片在线| 黄一区二区三区| 亚洲视频免费观看| 7777女厕盗摄久久久| 国产精品一区二区三区99| 亚洲欧美国产高清| 精品免费视频.| 色综合久久久久综合体| 蜜臀久久久99精品久久久久久| 欧美国产精品中文字幕| 欧美日韩国产免费一区二区| 国产成人精品三级麻豆| 亚洲成av人片一区二区三区| 久久久久高清精品| 欧美日韩日日夜夜| 成人免费三级在线| 奇米色一区二区| 亚洲女人的天堂| 国产日韩视频一区二区三区| 在线影院国内精品| 丁香激情综合国产| 日韩一区欧美二区| 亚洲最新视频在线播放| 久久精品一区二区| 日韩欧美一区中文| 欧美色老头old∨ideo| 国产成人三级在线观看| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产精品毛片久久久久久| 精品日韩在线观看| 91精品国产欧美一区二区18| 在线视频综合导航| 91在线视频播放| 国产露脸91国语对白| 日本午夜一本久久久综合| 亚洲一区二区中文在线| 国产精品久久久久久福利一牛影视| 精品久久一区二区| 日韩一区二区中文字幕| 欧美区视频在线观看| 91久久久免费一区二区| 色综合视频在线观看| 99精品偷自拍| 91麻豆精品视频| 99久精品国产| 99久久精品情趣| av一二三不卡影片| 99视频精品免费视频| 成人手机电影网| 成人激情综合网站| 99麻豆久久久国产精品免费| av亚洲精华国产精华| 99v久久综合狠狠综合久久| 成人黄色免费短视频| 成人av网址在线观看| 粉嫩嫩av羞羞动漫久久久| 国产**成人网毛片九色 | 中文字幕中文字幕在线一区| 国产精品美女久久久久aⅴ | 亚洲国产精品一区二区久久 | 日韩高清不卡一区二区| 日本特黄久久久高潮| 日韩成人一级大片| 加勒比av一区二区| 成人亚洲精品久久久久软件| gogo大胆日本视频一区| 欧洲另类一二三四区| 69精品人人人人| 久久美女艺术照精彩视频福利播放 | 日日夜夜免费精品| 精品午夜久久福利影院 | 欧美精品成人一区二区三区四区| 欧美日韩亚州综合| 精品成人a区在线观看| 国产精品第五页| 亚洲6080在线| 韩国三级电影一区二区| 成人福利电影精品一区二区在线观看| 91亚洲国产成人精品一区二三| 欧美性感一类影片在线播放| 日韩欧美的一区| 中文字幕av不卡| 亚洲成人福利片| 国产一区二区不卡| 欧美日产国产精品| 中文字幕欧美三区| 五月婷婷综合激情| 成人晚上爱看视频| 91精品国产综合久久久久久久久久| 26uuu国产在线精品一区二区| 亚洲同性gay激情无套| 免费观看成人av| 日本高清视频一区二区| 久久久五月婷婷| 日韩国产欧美在线视频| av亚洲精华国产精华精华| 精品久久一区二区| 亚洲成人你懂的| 97精品电影院| 亚洲国产高清在线观看视频| 日韩一区精品视频| 色综合一个色综合|