Goでinvalid memory address or nil pointer dereferenceが発生する
下記のコードを実行すると
panic: runtime error: invalid memory address or nil pointer dereference
が発生します。
これは、Insert()が返す*NodeのLeftがnilになっているからだと思うのですが、
Node.Leftがnilにならないようにするにはどうすればいいのでしょうか?
package main
type Node struct {
Value int
Left, Right, Parent *Node
}
func (n *Node) Insert(num int) *Node {
if num > n.Value {
n.Left.Value = num
n.Left.Parent = n
} else if num < n.Value {
n.Right.Value = num
n.Right.Parent = n
}
return n
}
func main() {
root := &Node{Value: 1264523}
root.Insert(222222)
}