Go之零值判斷

2021-10-14 15:45:56 字數 758 閱讀 8451

python判斷零值很簡單,因為是弱型別,所以會內建自動裝箱判斷處理。

只需要 if x : 即可。但是go如何判斷?這裡可以借助反射reflect處理。

func iszeroofinte***ce(x inte***ce{}) bool 

value := reflect.valueof(x)

switch value.kind()

return reflect.deepequal(value.inte***ce(), reflect.zero(value.type()).inte***ce())

}

測試

func testiszeroofinte***ce(t *testing.t) 

var person person

person2 := person

fmt.println(iszeroofinte***ce(person))

fmt.println(iszeroofinte***ce(person2))

person2.age = 11

fmt.println(iszeroofinte***ce(person2))

// nil

fmt.println(iszeroofinte***ce(nil))

}

結果

Go語言反射之值反射

反射不僅可以獲取值的型別資訊,還可操作變數的值。使用reflect.value型別操作變數的值。v make int,10 valuev reflect.valueof v fmt.println valuev.isvalid true fmt.println valuev.isnil false ...

go 判斷int 無賦值 Go之基礎知識二

一 數值型別 1 整型 go語言的整數型別一共有10個 int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64,可能我們比較常用的就是預設的int和uint,它們隨計算機架構不同所佔空間也會不一樣,而空間的表示法有位元bit或位元組byt...

go常用的判斷

var str string 字串初始化為 只能通過len str 而不能通過nil判斷 var i int int初始化為0 只能通過i 0,而不能通過nil判斷 var b bool 初始化為false,只能通過b true 而不能通過nil判斷 var bb byte 初始化為,可以用len ...