介面變數的型別也可以使用一種特殊形式的 switch 來檢測:type-switch
switch t := areaintf.(type)
輸出:
type square *main.square with value &
變數 t 得到了 areaintf 的值和型別, 所有 case 語句中列舉的型別(nil 除外)都必須實現對應的介面(在上例中即 shaper),如果被檢測型別沒有在 case 語句列舉的型別中,就會執行 default 語句。可以用 type-switch 進行執行時型別分析,但是在 type-switch 不允許有 fallthrough 。
如果僅僅是測試變數的型別,不用它的值,那麼就可以不需要賦值語句,比如:
switch areaintf.(type)
下面的**片段展示了乙個型別分類函式,它有乙個可變長度引數,可以是任意型別的陣列,它會根據陣列元素的實際型別執行不同的動作:
func classifier(items ...inte***ce{})
}}
可以這樣呼叫此方法:classifier(13, -14.3, 「belgium」, complex(1, 2), nil, false) 。
在處理來自於外部的、型別未知的資料時,比如解析諸如 json 或 xml 編碼的資料,型別測試和轉換會非常有用。
Go 語言的 Type Switch 語句解析
講述了go語言中 type swith 的用法以及獲取對應變數的一些特殊情況。type switch 是 go 語言中一種特殊的 switch 語句,它比較的是型別而不是具體的值。它判斷某個介面變數的型別,然後根據具體型別再做相應處理。注意,在 type switch 語句的 case 子句中不能使...
shell 電腦型別判斷(核心型別判斷)
當我們需要做一款相容不同平台的應用時,我們不得不考慮平台的相容性,因此,我們有必要區分不同的核心,從而進行不同的操作。下面將介紹如何利用shell對電腦的核心進行判斷 machine type uname m machine is 64bit no if amd64 o x86 64 o s390x...
空值判斷 型別判斷
一 判斷乙個物件是不是空 4種方法 1.object.getownpropertynames 返回值是物件中屬性名組成的陣列 如果是空陣列,即為空 eg let obj console.log object.getownpropertynames obj name age 不是空 2.轉化成字串 s...