天天看點

go語言變量的零值和nil

Go語言中無論是全局變量還是局部變量,隻要定義了一個變量都有預設的0值
int/int8/int16/int32/int64/uint/uint8/uint16/uint32/uint64/byte/rune/uintptr的預設值是0
float32/float64的預設值是0.0
bool的預設值是false
string的預設值是""
pointer/function/interface/slice/channel/map/error的預設值是nil
其它複合類型array/struct預設值是内部資料類型的預設值

package main
import "fmt"
func main() {
	var intV int // 整型變量
	var floatV float32 // 實型變量
	var boolV bool // 布爾型變量
	var stringV string // 字元串變量
	var pointerV *int // 指針變量
	var funcV func(int, int)int // function變量
	var interfaceV interface{} // 接口變量
	var sliceV []int // 切片變量
	var channelV chan int // channel變量
	var mapV map[string]string // map變量
	var errorV error // error變量

	fmt.Println("int = ", intV) // 0
	fmt.Println("float = ", floatV) // 0
	fmt.Println("bool = ", boolV) // false
	fmt.Println("string = ", stringV) // ""
	fmt.Println("pointer = ", pointerV) // nil
	fmt.Println("func = ", funcV) // nil
	fmt.Println("interface = ", interfaceV) // nil
	fmt.Println("slice = ", sliceV) // []
	fmt.Println("slice = ", sliceV == nil) // true
	fmt.Println("channel = ", channelV) // nil
	fmt.Println("map = ", mapV) // map[]
	fmt.Println("map = ", mapV == nil) // true
	fmt.Println("error = ", errorV) // nil

	var arraryV [3]int // 數組變量
	type Person struct{
		name string
		age int
	}
	var structV Person // 結構體變量
	fmt.Println("arrary = ", arraryV) // [0, 0, 0]
	fmt.Println("struct = ", structV) // {"" 0}
}
           

-------------------------------------------

個性簽名:代碼過萬,鍵盤敲爛!!!

如果覺得這篇文章對你有小小的幫助的話,記得在右下角點個“推薦”哦,部落客在此感謝!