關於零值和nil

yyyyyllll發表於2024-09-19

1. 零值

零值是指當你宣告變數(分配記憶體)並未顯式初始化時,始終為你的變數自動設定一個預設初始值的策略。

對於值型別:布林型別為 false, 數值型別為 0,字串為 "",陣列和結構會遞迴初始化其元素或欄位,即其初始值取決於元素或欄位。
對於引用型別: 均為 nil,包括指標 pointer,函式 function,介面 interface,切片 slice,管道 channel,對映 map。
因為切片是引用型別的,所以其零值也是 nil:例如下列程式碼

package main

import "fmt"
import "strings"

func main(){
    var s []string

    fmt.Println(s, len(s), cap(s)) // [] 0 0
    fmt.Println(s == nil) // true

    s = append(s, "Hello")
    s = append(s, "World")
    fmt.Println(strings.Join(s, ", ")) // Hello, World
}


具體內容參考:
https://zhuanlan.zhihu.com/p/295048056

相關文章