亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Go 中的字節是否可以使用 nil 值?

Go 中的字節是否可以使用 nil 值?

Go
函數式編程 2023-05-22 17:39:45
我正在 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 回答

?
肥皂起泡泡

TA貢獻1829條經驗 獲得超6個贊

byte是數值類型,實際上是.的別名uint8。

這意味著它的默認零值為0。


查看完整回答
反對 回復 2023-05-22
?
幕布斯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。


查看完整回答
反對 回復 2023-05-22
?
守著一只汪

TA貢獻1872條經驗 獲得超4個贊

golang 中的每種類型都有一個零值。在這種情況下byte是空字節。

完全有可能只使用空字節作為根部的神奇零有效負載。


查看完整回答
反對 回復 2023-05-22
  • 3 回答
  • 0 關注
  • 207 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號