Go之斷言類型(assert type)

1.背景介紹:

筆者最近在使用一個數據結構實現多個接口,但是卻發現想要在一段時間內轉換成接口1,另外一段時間轉換成接口2,所以也就使用到了斷言類型。在看過斷言類型之後,覺得還是很有必要講一講這個斷言類型,於是便有了這篇文章。

2.斷言類型介紹:

接口類型提供一種,將接口類型轉換成具體類型的轉換方法,也就是斷言類型(assert type)。使用方法如下所示:

t := i.(T)

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

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

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

t, ok := i.(T)

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

詳情參見:Go語言之斷言類型

歡迎關注公衆號:灰子學技術


英文原文可以參考:https://tour.golang.org/methods/15

https://medium.com/golangspec/type-assertions-in-go-e609759c42e1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章