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