型別判斷 type switch

2021-08-18 07:48:51 字數 798 閱讀 7365

介面變數的型別也可以使用一種特殊形式的 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...