中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

購物網(wǎng)站建設(shè)圖標(biāo)大全蘇州seo關(guān)鍵詞優(yōu)化軟件

購物網(wǎng)站建設(shè)圖標(biāo)大全,蘇州seo關(guān)鍵詞優(yōu)化軟件,appstore下載安卓版,網(wǎng)站的大小我們一起來回顧一下上一次說到的 interface{} 可以用來做多態(tài) 接口類型分為空接口類型和非空接口類型,他們的底層數(shù)據(jù)結(jié)構(gòu)不太一樣 這里順便說一下,用來作態(tài)需要滿足這樣的條件: 首先得有父類指針指向子類的對象這個接口還必須是非空接口…

我們一起來回顧一下上一次說到的 interface{}

  • 可以用來做多態(tài)

  • 接口類型分為空接口類型和非空接口類型,他們的底層數(shù)據(jù)結(jié)構(gòu)不太一樣

這里順便說一下,用來作態(tài)需要滿足這樣的條件:

  • 首先得有父類指針指向子類的對象
  • 這個接口還必須是非空接口,里面得包含方法,也就是使用的底層數(shù)據(jù)結(jié)構(gòu)是 iface
  • 子類會去實現(xiàn)父類的具體方法

interface{} 注意斷言

正常的使用斷言,寫一個簡單的 斷言 demo

type Animal interface{}func main() {var a Animal = "xiaomotong"v, ok := a.(string)if !ok{fmt.Println("type error")}fmt.Println("v == ",v)
}

斷言注意寫成 2 個返回值的,一個是具體的值,一個是 bool,判斷斷言是否成功,若成功則說明斷言正確,且 v 會被賦值為實際變量的值

切忌沒頭腦的強轉(zhuǎn)

func main() {var a Animal = "xiaomotong"v := a.(int)fmt.Println("v == ",v)
}

上述這種寫法,若不判斷是否斷言成功,直接強轉(zhuǎn),程序是會 panic 的 ,執(zhí)行上述程序后效果如下:

>go run main.go
panic: interface conversion: main.Animal is string, not intgoroutine 1 [running]:
main.main()D:/mycode/my_new_first/interface_test/main.go:13 +0x4c
exit status 2

程序崩掉,那就是線上問題了 xdm ,這里需要注意

當(dāng)然我們也可以這樣寫

type Animal interface{}func main() {var a Animal = "xiaomotong"switch a.(type) {case string:fmt.Println("a type is string")case int:fmt.Println("a type is int")}}

通過 switch 的方式來判斷 接口的數(shù)據(jù)類型,根據(jù)不同的數(shù)據(jù)類型來做不同的事情,進(jìn)行分類處理

用于反射的注意點

golang 里面有反射這個概念,簡單來說,咱們可以通過反射包來實現(xiàn)獲取接口真實的類型,和真實的數(shù)據(jù)

舉個小例子:

通過反射來獲取 Animal 接口的數(shù)據(jù)類型,和具體的數(shù)據(jù)值

type Animal interface{}func main() {var a Animal = "xiaomotong"v := reflect.ValueOf(a)fmt.Printf("v type == ", v.Type(), " v == ", v.String())
}

執(zhí)行上述代碼后效果如下:

> go run main.go
v type == %!(EXTRA *reflect.rtype=string, string= v == , string=xiaomotong)

沒毛病正常獲取,但是如果我們這樣寫的話是不是也可以正確執(zhí)行呢?

type Animal interface{}func main() {var a Animal = "xiaomotong"v := reflect.ValueOf(a)fmt.Printf("v type == ", v.Type(), " v == ", v.Int())
}

看這個例子也就和上面的例子相差在輸出的時候,一個是v.String() ,一個是v.Int() ,可是結(jié)果卻相差很大

go run main.go
v type == %!(EXTRA *reflect.rtype=string, string= v == , string=xiaomotong)
D:\mycode\my_new_first\interface_test>go run main.go
panic: reflect: call of reflect.Value.Int on string Valuegoroutine 1 [running]:
reflect.Value.Int(...)C:/Program Files/Go/src/reflect/value.go:999
main.main()D:/mycode/my_new_first/interface_test/main.go:26 +0x2bd
exit status 2

執(zhí)行上述代碼,go 程序給我們報了 panic 錯誤,這里需要注意 ,程序崩潰的原因是,我們將一個 string 類型的值反射成一個 Int 類型的值,直接在 反射包里面就給我們報了 panic

小知識,大挑戰(zhàn),簡單的寫 2 個注意事項,給 xdm 提個醒

歡迎點贊,關(guān)注,收藏

朋友們,你的支持和鼓勵,是我堅持分享,提高質(zhì)量的動力

好了,本次就到這里

技術(shù)是開放的,我們的心態(tài),更應(yīng)是開放的。擁抱變化,向陽而生,努力向前行。

我是阿兵云原生,歡迎點贊關(guān)注收藏,下次見~

http://www.risenshineclean.com/news/21574.html

相關(guān)文章:

  • 社交網(wǎng)站源代碼指數(shù)計算器
  • 虛擬主機和網(wǎng)站空間百度怎么推廣網(wǎng)站
  • 做網(wǎng)站電話銷售上海哪家seo好
  • 網(wǎng)站做快照深圳百度推廣seo公司
  • 網(wǎng)站上傳后后臺進(jìn)不去外鏈下載
  • 宜昌便宜做網(wǎng)站新聞最新消息
  • 用java編程做網(wǎng)站windows優(yōu)化大師的優(yōu)點
  • 免費做網(wǎng)站公司哪家好百度公司官網(wǎng)入口
  • 寶雞做網(wǎng)站的公司網(wǎng)站平臺都有哪些
  • 垂直類b2c網(wǎng)站北京網(wǎng)優(yōu)化seo優(yōu)化公司
  • 網(wǎng)站 域名綁定google中文搜索引擎
  • 東莞網(wǎng)站排名優(yōu)化seoapp軟件推廣怎么做
  • 新鄉(xiāng)專業(yè)網(wǎng)站建設(shè)公司地推團(tuán)隊如何收費
  • wordpress禁止評論優(yōu)化品牌seo關(guān)鍵詞
  • 如今做哪些網(wǎng)站致富百度站長工具官網(wǎng)
  • 騰訊云服務(wù)器可以做傳奇網(wǎng)站嗎我想在百度上做廣告怎么做
  • 滄浪企業(yè)建設(shè)網(wǎng)站價格營銷軟文范例大全100
  • 建設(shè)銀行網(wǎng)站怎么短信轉(zhuǎn)賬關(guān)鍵詞權(quán)重如何打造
  • 營銷型網(wǎng)站建設(shè)極速建站seo推廣軟件排行榜前十名
  • 戶縣規(guī)劃建設(shè)和住房保障局網(wǎng)站沙坪壩區(qū)優(yōu)化關(guān)鍵詞軟件
  • wordpress還是hexo青島seo關(guān)鍵詞優(yōu)化公司
  • 建設(shè)一個網(wǎng)站app全過程seo權(quán)威入門教程
  • 自己做的網(wǎng)站涉黃網(wǎng)站怎么推廣
  • 成交型網(wǎng)站倡導(dǎo)公司西安百度網(wǎng)站快速排名
  • 成都網(wǎng)站建設(shè)是什么百度店面定位怎么申請
  • 阿里媽媽新建網(wǎng)站怎么做百度客服投訴中心
  • 嘉峪關(guān)市建設(shè)局建管科網(wǎng)站外鏈價格
  • 查看網(wǎng)站有沒有備案全國疫情防控最新數(shù)據(jù)
  • 手機上做整蠱網(wǎng)站全網(wǎng)推廣軟件
  • 農(nóng)產(chǎn)品網(wǎng)站開發(fā) 文獻(xiàn)綜述seo外包公司興田德潤官方地址