go中的封装比较特殊:
使用方法名字的大小写来区分方法的属性:
首字母大写:public
首字母小写:privite
而这个public和privite是针对包来说的,包的概念:
每个目录一个包,包名和目录名不一定要一样。
main包包含了可执行的入口。
为结构定义的方法必须放在同一个包内,可以是不同的文件。
package tree
import "fmt"
type Node struct {
Value int
LeftNode, RightNode *Node
}
func CreateTreeNode(value int) *Node {
return &Node{Value: value}
}
func (node Node) Print() {
fmt.Println("nodeValue:",node.Value)
}
func (node *Node) SetValue(value int) {
node.Value =value
}
func (node *Node) Traverse() {
if node == nil{
return
}
node.LeftNode.Traverse()
node.Print()
node.RightNode.Traverse()
}
此时所有的方法都是public