首先澄清一下標(biāo)題,我知道 Go 中沒(méi)有接口文字這樣的東西,但我無(wú)法為這個(gè)問(wèn)題想出另一個(gè)名字。我正在閱讀一些 Go 代碼并發(fā)現(xiàn)了一個(gè)奇怪的結(jié)構(gòu),如下所示:clientOptions := []grpc.DialOption{grpc.WithInsecure()}
cc, err := grpc.Dial(l.Addr().String(), clientOptions...)這里 grpc.DialOptions 是一個(gè)接口類(lèi)型,而 grpc.WithInsecure() 返回該類(lèi)型。在這里引起我注意的是 clientOptions 是一個(gè)切片,這對(duì)我來(lái)說(shuō)似乎是多余的。所以我嘗試像這樣刪除大括號(hào):clientOptions := grpc.DialOption{grpc.WithInsecure()}但我得到編譯錯(cuò)誤:“無(wú)效的復(fù)合文字類(lèi)型 grpc.DialOption”我試圖在 go 操場(chǎng)上模擬這個(gè),我得到了相同的結(jié)果。此代碼運(yùn)行良好: https ://go.dev/play/p/QJQR9BDGN4a但是這個(gè)版本失敗了,同樣的“無(wú)效的復(fù)合文字類(lèi)型錯(cuò)誤”: https ://go.dev/play/p/A0FasDybUg5有人可以解釋一下嗎?謝謝
1 回答
大話西游666
TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超14個(gè)贊
您是正確的,這會(huì)創(chuàng)建一個(gè)切片:
clientOptions := []grpc.DialOption{grpc.WithInsecure()}但是我認(rèn)為您誤解了哪種語(yǔ)法可以做什么。這將是一個(gè)空切片文字:
clientOptions := []grpc.DialOption{}這將是單個(gè)值,而不是切片:
clientOptions := grpc.WithInsecure()
作為參考,此語(yǔ)法包含在Tour of Go中。
- 1 回答
- 0 關(guān)注
- 102 瀏覽
添加回答
舉報(bào)
0/150
提交
取消
