封装
- 名字一般使用CamelCase
- public:首字母大写
- private:首字母小写
public和private是针对于包来说的;
包
package main这个就是一个包;但是我们的包远远不止一个main;main只是一个入口,我们真正的代码都应该写在各自的包里面
- 每个目录一个包,go和java不一样,go的包名不一定和目录的名字一样;但是每个目录只能由一个包
- main包包含可执行入口,里面有一个main函数;如果目录下有一个main函数,那么这个目录下只能有一个main包
- 为struct定义的方法必须放在同一个包内;但是可以是不同的文件
规范学习
tree包
Node
package tree
import (
"fmt"
)
type Node struct {
Value int
Left, Right *Node
}
func CreateNode(value int) *Node {
return &Node{Value: value}
}
func (node Node) Print() {
fmt.Print(node.Value, " ")
}
func (node *Node) SetValue(value int) {
if node == nil {
fmt.Println("node is nil")
return
}
node.Value = value
}
traversesal
package tree
func (node *Node) Traverse() {
if node == nil {
return
}
node.Left.Traverse()
node.Print()
node.Right.Traverse()
}
main
package main
import "awesomeProject/tree"
func main() {
var root tree.Node
root = tree.Node{Value: 3}
root.Left = &tree.Node{}
root.Right = &tree.Node{Value: 5}
root.Right.Left = new(tree.Node)
root.Left.Right = tree.CreateNode(2)
root.Right.Left.SetValue(4)
// 0 2 3 4 5
root.Traverse()
}