golang 型別斷言

2021-08-19 10:39:49 字數 835 閱讀 3535

型別斷言是乙個使用在介面值上的操作

有時候,我們可能需要知道某個介面型別的實際型別,比如某個方法需要接收多種型別的資料並需做分別處理時,我們可以把形參設為空介面型別以接收任意型別的值,但是我們怎麼反向知道裡面實際儲存了的是哪個型別的物件呢?

一種常用的方法是:

comma-ok 斷言

value,ok := x.(t)

x表示乙個介面的型別,t表示乙個型別(也可為介面型別)

該斷言表示式會返回x的值和乙個布林值可根據該布林值判斷x是否為t型別

如:

func main() 

x =10

value, ok := x.(int)

fmt.print(value, ",", ok)

}

輸出

注意:在switch結構中使用了switch a.(type),該element.(type)語法不能在 switch 外的任何邏輯裡面使用

Golang 型別斷言

需要的知識 inte ce x.t 檢查x的動態型別是否是t,其中x必須是介面值。直接使用 func main x 100 value1,ok x.int if ok value2,ok x.string if ok 需要注意如果不接收第二個引數也就是ok,這裡失敗的話則會直接panic,這裡還存在...

golang 型別斷言的學習

在php中有乙個 serialize 函式 可以把陣列序列化成字串進行儲存和傳輸 如果想反序列化這種字串,在php中只需要乙個簡單的unserialize 函式就可以完成了.但是在golang中可就沒有這麼容易了,非得費個九牛二虎之力,寫上不少 才行。這時候只想感嘆一下,php真的是世界上最好的語言...

golang中的型別斷言

golang有型別轉換,型別斷言,型別切換 1.介面型別斷言 型別斷言就是將介面型別的值 x 裝換成型別 t 成功則返回 t 的例項。格式為 x.t 不安全,會造成panic,程式中斷 v x.t 不安全,會造成panic,程式中斷 v,ok x.t 推薦寫法型別斷言的必要條件就是x是介面型別,非介...