亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

golang中的隱式接口轉換

golang中的隱式接口轉換

Go
米琪卡哇伊 2021-10-25 17:19:43
這是我想展示的想法的一個例子。package mainimport "fmt"// interface declaration//type A interface {    AAA() string}type B interface{    Get() A}// implementation//type CA struct {}// implementation of A.AAAfunc (ca *CA) AAA() string {    return "it's CA"}type C struct {}// implementation of B.Get, except for returning a 'struct' instead of an 'interface'func (c *C) Get() *CA {    return &CA{}}func main() {    var c interface{} = &C{}    d := c.(B)    fmt.Println(d.Get().AAA())    fmt.Println("Hello, playground")}在這個例子中接口B有一個Get返回接口的方法AstructC有一個成員函數Get返回一個指向 struct 的指針CA,它實現了接口A結果是 Go 無法B從 struct推導出接口C,即使它們的Get方法只是返回類型不同,這是可轉換的。我提出這個問題的原因是當接口A、B和struct C、CA在不同的包中時,我只能:將 Get 方法細化C為func Get() A,這會在包之間引入一些依賴關系。將GetinterfaceB和 struct 的方法都細化C為func Get() interface{}我想避免包之間的依賴并盡量不依賴interface{},誰能給我一些提示?Go 的最佳實踐是什么?
查看完整描述

1 回答

  • 1 回答
  • 0 關注
  • 247 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號