老师您好,关于结构体方法的问题
package main
import "fmt"
type treeNode struct {
value int
left, right *treeNode
}
func (node treeNode) print() {
fmt.Println(node.value)
}
func setValue(value int, node treeNode) {
node.value = value
}
func createNode(value int) *treeNode {
return &treeNode{value: value}
}
func main() {
var root treeNode
root = treeNode{value: 3}
root.left = &treeNode{}
root.right = &treeNode{5, nil, nil}
root.right.left = new(treeNode)
root.left.right = createNode(2)
root.print()
setValue(4, root.right.left)
fmt.Println(root.right.left.value)
}
上面这样setValue会报错:cannot use root.right.left (type *treeNode) as type treeNode in argument to setValue
package main
import "fmt"
type treeNode struct {
value int
left, right *treeNode
}
func (node treeNode) print() {
fmt.Println(node.value)
}
func (node treeNode) setValue(value int) {
node.value = value
}
func createNode(value int) *treeNode {
return &treeNode{value: value}
}
func main() {
var root treeNode
root = treeNode{value: 3}
root.left = &treeNode{}
root.right = &treeNode{5, nil, nil}
root.right.left = new(treeNode)
root.left.right = createNode(2)
root.print()
root.right.left.setValue(4)
fmt.Println(root.right.left.value)
}
这样却不报错,不是说这两种定义方法都是一样的吗
28
收起
正在回答
1回答
报错是因为你定义的函数
setValue
第二个参数要求的是一个结构体,你调用时传的却是一个结构体指针
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星