是否有一个nil值可用于Go中的字节?
我正在执行一个Go中的树。我的TreeNode结构如下所示:是否有一个nil值可用于Go中的字节?,go,Go,我正在执行一个Go中的树。我的TreeNode结构如下所示: type TreeNode struct { payload byte parent *TreeNode children map[byte]*TreeNode } func createEmptyTree(fileName string) *TreeNode{ return &TreeNode{ nil, // Line #180 nil,
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{},
}
}
在我的实现中,树的根节点是一个没有有效负载的特殊节点。否则,有效负载总是来自英语字母表的单个小写字母。因此,我的树初始化函数如下所示:
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:不能在字段值中使用nil作为类型字节
看来我不能用nil来表示字节变量。在这种情况下,我还有什么可以用的吗?我可以很容易地使用“0”或其他非字母字符。但它似乎很粗糙。我该怎么办?golang中的每种类型都有一个零值。对于字节,它是空字节
完全可以在根目录中将空字节用作神奇的零负载。golang中的每种类型都有一个零值。对于字节,它是空字节 完全可以在根目录中将空字节用作神奇的零负载。字节是一个,实际上是uint8的别名 这意味着它的默认值为0 字节是一个,实际上是uint8的别名
这意味着它的默认值为0 对于惯用的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)
}
游乐场:
输出:
&{0 <nil> map[]}
空树的有效负载值为整数0,即整数类型字节的零值。零不是英语字母表中的单个小写字母值
当通过声明为变量分配存储时
或者调用new,或者当通过
复合文字或make调用,不需要显式初始化
如果提供,则为变量或值提供默认值。每个元素
此类变量或值的类型设置为零值:
布尔值为false,数字类型为0,字符串为0,字符串为nil
指针、函数、接口、切片、通道和映射
对于惯用的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)
}
游乐场:
输出:
&{0 <nil> map[]}
空树的有效负载值为整数0,即整数类型字节的零值。零不是英语字母表中的单个小写字母值
当通过声明为变量分配存储时
或者调用new,或者当通过
复合文字或make调用,不需要显式初始化
如果提供,则为变量或值提供默认值。每个元素
此类变量或值的类型设置为零值:
布尔值为false,数字类型为0,字符串为0,字符串为nil
指针、函数、接口、切片、通道和映射
将零值与字节片混淆。切片的零值为零。对于一个字节(uint8的别名),它是0。零值与字节片混淆。切片的零值为零。对于一个字节(uint8的别名),它的值为0。