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

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

Go 中的接口字面量

Go 中的接口字面量

Go
MMMHUHU 2022-11-08 16:37:51
首先澄清一下標題,我知道 Go 中沒有接口文字這樣的東西,但我無法為這個問題想出另一個名字。我正在閱讀一些 Go 代碼并發現了一個奇怪的結構,如下所示:clientOptions := []grpc.DialOption{grpc.WithInsecure()} cc, err := grpc.Dial(l.Addr().String(), clientOptions...)這里 grpc.DialOptions 是一個接口類型,而 grpc.WithInsecure() 返回該類型。在這里引起我注意的是 clientOptions 是一個切片,這對我來說似乎是多余的。所以我嘗試像這樣刪除大括號:clientOptions := grpc.DialOption{grpc.WithInsecure()}但我得到編譯錯誤:“無效的復合文字類型 grpc.DialOption”我試圖在 go 操場上模擬這個,我得到了相同的結果。此代碼運行良好: https ://go.dev/play/p/QJQR9BDGN4a但是這個版本失敗了,同樣的“無效的復合文字類型錯誤”: https ://go.dev/play/p/A0FasDybUg5有人可以解釋一下嗎?謝謝
查看完整描述

1 回答

?
大話西游666

TA貢獻1817條經驗 獲得超14個贊

您是正確的,這會創建一個切片:

clientOptions := []grpc.DialOption{grpc.WithInsecure()}

但是我認為您誤解了哪種語法可以做什么。這將是一個空切片文字:

clientOptions := []grpc.DialOption{}

這將是單個值,而不是切片:

clientOptions := grpc.WithInsecure()

作為參考,此語法包含在Tour of Go中。


查看完整回答
反對 回復 2022-11-08
  • 1 回答
  • 0 關注
  • 91 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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