<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
我們知道interface的變數裡面可以儲存任意型別的數值(該型別實現了interface)。那麼我們怎麼反向知道這個變數裡面實際儲存了的是哪個型別的物件呢?目前常用的有兩種方法:
Go語言裡面有一個語法,可以直接判斷是否是該型別的變數: value, ok = element.(T),這裡value就是變數的值,ok是一個bool型別,element是interface變數,T是斷言的型別。
如果element裡面確實儲存了T型別的數值,那麼ok返回true,否則返回false。
var i []interface{} i = append(i, 10, 3.14, "aaa", demo15) for _, v := range i { if data, ok := v.(int); ok { fmt.Println("整型資料:", data) } else if data, ok := v.(float64); ok { fmt.Println("浮點型資料:", data) } else if data, ok := v.(string); ok { fmt.Println("字串資料:", data) } else if data, ok := v.(func()); ok { //函數呼叫 data() } }
var i []interface{} i = append(i, 10, 3.14, "aaa", demo15) for _,data := range i{ switch value:=data.(type) { case int: fmt.Println("整型",value) case float64: fmt.Println("浮點型",value) case string: fmt.Println("字串",value) case func(): fmt.Println("函數",value) } }
if判斷
package main import "fmt" type Student struct { name string id int } func main() { i := make([]interface{}, 3) i[0] = 1 //int i[1] = "hello go" //string i[2] = Student{"mike", 666} //Student //型別查詢,型別斷言 //第一個返回下標,第二個返回下標對應的值, data分別是i[0], i[1], i[2] for index, data := range i { //第一個返回的是值,第二個返回判斷結果的真假 if value, ok := data.(int); ok == true { fmt.Printf("x[%d] 型別為int, 內容為%dn", index, value) } else if value, ok := data.(string); ok == true { fmt.Printf("x[%d] 型別為string, 內容為%sn", index, value) } else if value, ok := data.(Student); ok == true { fmt.Printf("x[%d] 型別為Student, 內容為name = %s, id = %dn", index, value.name, value.id) } } }
Switch判斷
package main import "fmt" type Student struct { name string id int } func main() { i := make([]interface{}, 3) i[0] = 1 //int i[1] = "hello go" //string i[2] = Student{"mike", 666} //Student //型別查詢,型別斷言 for index, data := range i { switch value := data.(type) { case int: fmt.Printf("x[%d] 型別為int, 內容為%dn", index, value) case string: fmt.Printf("x[%d] 型別為string, 內容為%sn", index, value) case Student: fmt.Printf("x[%d] 型別為Student, 內容為name = %s, id = %dn", index, value.name, value.id) } } }
以上就是GO語言型別查詢型別斷言範例解析的詳細內容,更多關於GO型別查詢型別斷言 的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45