我正在 Go 中實現一棵樹。我的 TreeNode 結構如下所示:type TreeNode struct { payload byte parent *TreeNode children map[byte]*TreeNode}在我的實現中,樹的根節點是一個沒有負載的特殊節點。否則有效負載始終是英文字母表中的單個小寫字母。所以我的樹初始化函數如下所示:func createEmptyTree(fileName string) *TreeNode{ return &TreeNode{ nil, // Line #180 nil, false, map[byte]*TreeNode{}, }}但是,當我編譯它時,出現以下錯誤:./main.go:180:9: cannot use nil as type byte in field value所以看來我不能用于nil字節變量。在這種情況下我還有什么可以使用的嗎?我可以輕松使用'0'或其他非字母字符。但這似乎很老套。我應該怎么辦?
3 回答

幕布斯6054654
TA貢獻1876條經驗 獲得超7個贊
對于慣用的 Go,將您的函數編寫為:
package main
import (
? ? "fmt"
)
type TreeNode struct {
? ? payload? byte
? ? parent? ?*TreeNode
? ? children map[byte]*TreeNode
}
func createEmptyTree(fileName string) *TreeNode {
? ? return &TreeNode{
? ? ? ? children: map[byte]*TreeNode{},
? ? }
}
func main() {
? ? tree := createEmptyTree("fiename")
? ? fmt.Println(tree)
}
游樂場:https://play.golang.org/p/v6DJCnpN6Ys
輸出:
&{0?<nil>?map[]}
payload
空樹的值為整數零 (?)?0
,整數類型 的零值byte
。零不是英文字母表中的單個小寫字母值。
Go 編程語言規范
零值
當通過聲明或調用 new 為變量分配存儲空間時,或者通過復合文字或調用 make 創建新值時,并且沒有提供顯式初始化,則給出變量或值一個默認值。此類變量或值的每個元素都設置為其類型的零值:布爾值為 false,數字類型為 0,字符串為 "",指針、函數、接口、切片、通道和映射為 nil。
- 3 回答
- 0 關注
- 207 瀏覽
添加回答
舉報
0/150
提交
取消