我有一張 類型的地圖set,實(shí)際上是map[string]string. 然而,將它傳遞給接受 a 的函數(shù)會(huì)map[string]string失敗,因?yàn)?Go 不識(shí)別set為 1。然而,我無法說服編譯器它是其中之一。有沒有辦法解決這個(gè)問題,而不需要循環(huán)和復(fù)制?package mainimport ( "fmt")type name stringtype field stringtype set map[name]field // map[string]string after alltype plain map[string]string // also map[string]stringfunc main() { var typed = set{"hi": "ho"} // map[string]string? back := plain(typed) // cannot convert typed (type set) to type plain back := typed.(plain) // invalid type assertion: typed.(plain) (non-interface type set on left) echo(back)}func echo(in map[string]string) { fmt.Println(in)}
1 回答

慕碼人2483693
TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個(gè)贊
您可以使用不安全的包來做到這一點(diǎn)。
注意:我認(rèn)為這不一定是一個(gè)好主意,可能正確的方法是迭代和復(fù)制,但因?yàn)樗_實(shí)回答了所提出的問題......
var typed = set{"hi": "ho"} // map[string]string?
p := unsafe.Pointer(&typed)
var back plain
back = *(*plain)(p)
游樂場(chǎng): https: //play.golang.org/p/yienSuJSnQU
- 1 回答
- 0 關(guān)注
- 206 瀏覽
添加回答
舉報(bào)
0/150
提交
取消