亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

golang中有哪些斷言類型

發布時間:2021-08-10 17:42:45 來源:億速云 閱讀:164 作者:Leah 欄目:大數據

今天就跟大家聊聊有關golang中有哪些斷言類型,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

1)語法一

t := i.(T)

解釋說明:

T:表示的是具體的數據類型,i:表示的是接口變量i,t:表示的是轉換之后的變量。

功能介紹

這個語句實現的功能是:將接口變量i按照類型T轉換成t,其中t中的值是i轉換得來的,一旦轉換不成功就會觸發一個panic。

2)除此之外還有另外一個寫法:

t, ok := i.(T)

功能介紹:

表達式里面多了一個ok,實現的功能是:將接口i按照類型T轉換成t,如果類型匹配ok=true,如果類型不匹配,ok=false。改語句不會觸發panic。

3)例子如下所示:




















package main
import "fmt"
func main() {  var i interface{} = "hello world"
 str := i.(string) // 1.接口i是string類型,會將"hello world"賦值給str  fmt.Println(str)
 s, ok := i.(string) // 2.接口類型是string,會將"hello world"賦值給s,并且ok=true  fmt.Println(s, ok)
 idx, ok := i.(int) // 3.接口類型不是int,ok=false,idx不會從i獲取到數值  fmt.Println(idx, ok)    idx = i.(int) // 4.接口i不是int類型,會觸發panic  fmt.Println(idx)}

Output:









hello worldhello world true0 falsepanic: interface conversion: interface {} is string, not int
goroutine 1 [running]:main.main()  /tmp/sandbox277669744/prog.go:17 +0x1f4

3.斷言類型的使用場景:

1)T的類型是具體類型

類型斷言檢查x的動態類型是否等于具體類型T。如果檢查成功,類型斷言返回的結果是x的動態值,其類型是T。

例子可以參考2中的例子,并無特別的不同之處。

2)T的類型是接口類型

類型斷言檢查x的動態類型是否滿足T。如果檢查成功,x的動態值不會被提取,返回值是一個類型為T的接口值。換句話說,到接口類型的類型斷言,改變了表達式的類型,改變了(通常是擴大了)可以訪問的方法,且保護了接口值內部的動態類型和值。

例子:

package main
import (    "fmt")
type I interface {    walk()}type J interface {    fly()}type A struct{}
func (a A) walk() {    fmt.Println("walk!")}func (a A) fly() {    fmt.Println("fly!")}func main() {    var i I    i = A{}  // dynamic type of i is A    fmt.Printf("%T\n", i.(A))    // i.fly()  // 報錯:./prog.go:26:6: i.fly undefined (type I has no field or method fly)    var j J    j = i.(J) // 這里將i中的值轉換成接口J這一個類型    fmt.Printf("%T\n", j)    j.fly()}

Output:

main.Amain.Afly!

看完上述內容,你們對golang中有哪些斷言類型有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

溧水县| 天镇县| 河东区| 萝北县| 惠州市| 开鲁县| 凯里市| 呼图壁县| 蓝田县| 开封市| 定兴县| 千阳县| 玉山县| 九寨沟县| 枣强县| 临沭县| 潜江市| 华宁县| 达孜县| 鸡泽县| 巨鹿县| 霍林郭勒市| 平泉县| 松原市| 平湖市| 永春县| 锡林郭勒盟| 铜鼓县| 建宁县| 湖州市| 和田市| 咸阳市| 马龙县| 寿光市| 福建省| 额敏县| 崇左市| 河北省| 修武县| 昌江| 康保县|