Go?interface{}?轉(zhuǎn)切片類(lèi)型的實(shí)現(xiàn)方法
遇到這樣一個(gè)情況想將變量v轉(zhuǎn)化為[]string類(lèi)型
var v interface{} a := []interface{}{"1", "2"} v = a // v 這時(shí)還是interface{} 但其實(shí)是個(gè) []interface{} newValue := v.([]string) fmt.Println(newValue)
提示:
panic: interface conversion: interface {} is []interface {}, not []string [recovered]
panic: interface conversion: interface {} is []interface {}, not []string
提示我們不能直接換成[]string所以我們先轉(zhuǎn)化為[]interface{}
newValue := v.([]interface{}) fmt.Println(newValue)
打印: [1 50]
然后我們?cè)噲D將 []interface{} 轉(zhuǎn)化為[]string
newValue := v.([]interface{}) s := newValue.([]string) fmt.Println(s)
提示:invalid type assertion: newValue.([]string) (non-interface type []interface {} on left)
這里告訴我們只有接口類(lèi)型的才可以進(jìn)行斷言所以這種方式是錯(cuò)誤的
由于切片類(lèi)型間不能互相直接轉(zhuǎn)化所以需要展開(kāi)遍歷,然后對(duì)interface{}進(jìn)行斷言
var v interface{} var s []string a := []interface{}{"1", "2"} v = a // v 這時(shí)還是interface{} 但其實(shí)是個(gè) []interface{} for _, val := range v.([]interface{}) { ?? ?s = append(s, val.(string)) } fmt.Println(s)
到此成功轉(zhuǎn)化完成
總結(jié):
interface{} 就算是個(gè)切片類(lèi)型也不能直接遍歷,需要先轉(zhuǎn)化
切片之間不能互相轉(zhuǎn)化
接口類(lèi)型的才可以進(jìn)行斷言
到此這篇關(guān)于Go interface{} 轉(zhuǎn) 切片類(lèi)型的文章就介紹到這了,更多相關(guān)Go interface{} 轉(zhuǎn) 切片類(lèi)型內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Golang 空map和未初始化map的注意事項(xiàng)說(shuō)明
這篇文章主要介紹了Golang 空map和未初始化map的注意事項(xiàng)說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04解決Goland 提示 Unresolved reference 錯(cuò)誤的問(wèn)題
這篇文章主要介紹了解決Goland 提示 Unresolved reference 錯(cuò)誤的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12golang使用通道時(shí)需要注意的一些問(wèn)題
本文主要介紹了golang使用通道時(shí)需要注意的一些問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07Golang實(shí)現(xiàn)短網(wǎng)址/短鏈服務(wù)的開(kāi)發(fā)筆記分享
這篇文章主要為大家詳細(xì)介紹了如何使用Golang實(shí)現(xiàn)短網(wǎng)址/短鏈服務(wù),文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解一下2023-05-05對(duì)Golang中的runtime.Caller使用說(shuō)明
這篇文章主要介紹了對(duì)Golang中的runtime.Caller使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12Go語(yǔ)言atomic.Value如何不加鎖保證數(shù)據(jù)線程安全?
這篇文章主要介紹了Go語(yǔ)言atomic.Value如何不加鎖保證數(shù)據(jù)線程安全詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05從Context到go設(shè)計(jì)理念輕松上手教程
這篇文章主要為大家介紹了從Context到go設(shè)計(jì)理念輕松上手教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09