為什么 golang 不支持將切片轉換為空介面?但是,您可以通過將具有空介面的變數宣告為型別并將切片分配給該變數來解決它。為什么這些不是一回事?
示例:https : //play.golang.com/p/r4LXmR4JhF0
uj5u.com熱心網友回復:
首先,Go不支持鑄造可言。
Go* 中根本沒有型別轉換。
你試圖做的是一個型別斷言。
您的嘗試失敗有兩個原因。兩者都由編譯器解釋:
invalid type assertion: slice.(<inter>) (non-interface type []interface {} on left)您不能對介面進行型別斷言任何非介面型別。
non-name *castedSlice on left side of :=*castedSlice在這種情況下是無效的。
如果要將切片存盤在型別為 的變數中,則賦值是正確的方法interface{}。您可以通過以下幾種方式做到這一點:
正如您所發現的,這是有效的:
var result interface{} result = slice您可以組合這兩行:
var result interface{} = slice你也可以做一個簡短的變數宣告:
result := interface{}{slice}
* 免得有人挑剔這句話:使用 unsafe 包在技術上可以實作與 Go 中的型別轉換相同的功能,但由于這超出了語言規范,并且根據定義是不安全的,我認為它仍然是Go 不支持型別轉換的合理宣告。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/385986.html
上一篇:如何發送指定地址的UDP資料包
下一篇:如何通過介面回傳字串{}
