在 Go 語言中,如果一個接口在一個包里,其他包要實現該接口,需要遵循下列步驟:
創(chuàng)新互聯建站堅持“要么做到,要么別承諾”的工作理念,服務領域包括:成都網站設計、成都做網站、企業(yè)官網、英文網站、手機端網站、網站推廣等服務,滿足客戶于互聯網時代的靖邊網站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯網解決方案。努力成為您成熟可靠的網絡建設合作伙伴!
1. 定義接口:
假設接口定義在 `foo` 包中:
go
package foo
type MyInterface interface {
MyMethod() string
}
2. 實現接口:
定義一個新的類型 `Bar`,并為其實現 `foo.MyInterface` 接口:
go
package bar
import "your-package/foo"
type Bar struct {
// ...
}
func (b Bar) MyMethod() string {
// implement method
return "bar"
}
在這里,需要導入 `foo` 包,并定義一個 `Bar` 類型,為其實現 `foo.MyInterface` 接口,這樣就完成了在不同包中實現接口的目標。
如果在其他包中使用 `Bar`,需要先導入 `bar` 包,然后聲明 `Bar` 實例,并將其轉換為 `foo.MyInterface`,然后就可以調用 `MyMethod` 方法了:
go
import "your-package/bar"
func main() {
var myInterface foo.MyInterface = new(bar.Bar)
myInterface.MyMethod()
}
在這里,我們定義了一個 `myInterface` 實例,將其類型聲明為 `foo.MyInterface`,并將其初始化為 `new(bar.Bar)`。這允許我們調用 `MyMethod` 方法,這個方法實際上是由 `bar.Bar` 類型實現的。
總結起來,在其他包中使用其它包的接口,需要實現接口的包定義一個新的類型,并完成接口的實現,另一個使用接口的包需要導入實現包的路徑,并將接口轉換成實現類型。
例如你自定義的包在 %GOPATH%\custom\mypkg 你的包名也應該聲明為 package mypkg 在其它包中 import "custom/mypkg"
當嘗試了網上所有方法,仍然發(fā)現在主文件.go中或者在其他地方引用自定義包時,自動刪除導入的包的情況解決如下:
如你存放地址的包在src/xxx點抗 中時請通過命令行進入這個文件夾的位置
然后執(zhí)行go mod init xxx點抗 /m/v1回車
上述的.../m/v1隨便,這個是按照官方的建議這么寫的方便維護版本吧?!
再次嘗試引入自定義包,引用方式如下:
xxx點抗 /m/v1
|_test
| |_test.go
|_main.go
import (
"fmt"
"xxx點抗 /m/v1/test"
)
獻給被折磨許久的小伙伴們。。。