I notice in the source comiler go initialize a Node n use a temp x, why the
variable n is initialized like this?
why just initilize the n like below?
n = new(Node)
n.Func = new(Func)
*the source from File: src/cmd/compile/internal/gc/subr.go*
func nodl(pos src.XPos, op Op, nleft, nright *Node) *Node {
var n *Node
switch op {
case OCLOSURE, ODCLFUNC:
var x struct {
Node
Func
}
n = &x.Node
n.Func = &x.Func
case ONAME:
Fatalf("use newname instead")
case OLABEL, OPACK:
var x struct {
Node
Name
}
n = &x.Node
n.Name = &x.Name
default:
n = new(Node)
}
n.Op = op
n.Left = nleft
n.Right = nright
n.Pos = pos
n.Xoffset = BADWIDTH
n.Orig = n
return n
}
Anyone can explain this?
--
You received this message because you are subscribed to the Google Groups
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.