golang的可空型別和零值

2022-06-02 01:36:18 字數 2256 閱讀 2035

可空型別可以置為nil

在go裡面,基本型別都是不可空型別

var a int = nil

var a int // default value of int, cannot be nil

fmt.println(a) // 0

0

types

zero value

int, int8, int16, int32, int64

0uint, uint8, uint16, uint32, uint64

0uintptr

0float32, float64

0.0byte

0rune

0string

"」 (empty string)

complex64, complex128

(0,0i)

boolean

false

arrays of non-nillable types

array of zero-values

arrays of nillable types

array of nil-values

struct

可空型別的預設值為

需要保持可警惕,是否未nil,在可空型別在被初始化之前使用,可能會導致panic

可空型別包含:

但是,對空map賦值會導致panic

type person struct 

func main() 有乙個空字串

fmt.print(mp["me"])

// nil

fmt.println(mpp["me"])

// 空字串

fmt.println(mps[99])

// panic: assignment to entry in nil map

mps[1] = "sss"

}

**鏈結

var mp map[string]int

//panic: assignment to entry in nil map

mp["me"] = 0

// 0 0

fmt.println(len(s), cap(s))

fmt.println(s)

//panic: runtime error: index out of range [1] with length 1

fmt.println(s[1])

**位址

以上型別使用對時候需要保持留意是否為nil值

var p *int // pointer to an int

*p++ // panic: runtime error: invalid memory address or nil pointer dereference

// p is an address to nothing, and therefore is nil

var p error // nil-value of type error

error.error() // panic: runtime error: invalid memory address or nil pointer dereference

var f func(string) // nil-function

f("oh oh") // panic: runtime error: invalid memory address or nil pointer dereference

var c chan bool

//fatal error: all goroutines are asleep - deadlock!

c <- true

fmt.println("hello world")

var c chan bool

//panic: close of nil channel

close(c)

fmt.println("hello world")

系統地學習go各種型別的預設值

語雀博文  《golang的可空型別和零值》

可空值型別

一 問題產生 在設計資料庫時,資料庫中的一列可能為null值,而這使我們在處理資料庫中的資料時將變得困難,因為clr沒有辦法將int型別表示成null值。二 解決辦法 1 在設計資料庫時,設定列的預設值,避免列存入空值 2 clr引入可空值型別 三 system.nullable結構定義的邏輯表示 ...

可空值型別

1 可空值型別 system.nullablewhere t struct 2 system.nullable與 int,double平級,為.net中的 一級公民 3 int32 nullable 4 nullable型別值與各種操作符進行運算,如果 nullable為null,則 結果為 nul...

可空值型別

c 中的可空值型別 c 不允許把null值賦給乙個值型別,以下語法是錯誤的 int i a null 但是,利用 c 定義的乙個修飾符,可將乙個變數宣告為乙個可空 nullable 值型別。可空值型別在行為上與普通值型別相似,但可以將乙個 null 值賦給它。如下所示 int?a null 合法 當...