您现在的位置是:主页 > news > 最好的网站建设公司有哪些/网络营销的特征和功能

最好的网站建设公司有哪些/网络营销的特征和功能

admin2025/5/1 1:05:36news

简介最好的网站建设公司有哪些,网络营销的特征和功能,政府门户网站建设经验汇报材料,内网穿透软件哪个好go语言的包、封装、组合包封装如何扩充系统类型或者别人的类型组合包 1、go语言中,每个目录为一个包 2、main包包含可执行入口 3、为结构定义的方法必须放在同一个包内,可以在不同的文件中 封装 go语言中结构、常量、方法首字母大写,代表p…

最好的网站建设公司有哪些,网络营销的特征和功能,政府门户网站建设经验汇报材料,内网穿透软件哪个好go语言的包、封装、组合包封装如何扩充系统类型或者别人的类型组合包 1、go语言中,每个目录为一个包 2、main包包含可执行入口 3、为结构定义的方法必须放在同一个包内,可以在不同的文件中 封装 go语言中结构、常量、方法首字母大写,代表p…

go语言的包、封装、组合

  • 封装
  • 如何扩充系统类型或者别人的类型
  • 组合

1、go语言中,每个目录为一个包
2、main包包含可执行入口
3、为结构定义的方法必须放在同一个包内,可以在不同的文件中

封装

go语言中结构、常量、方法首字母大写,代表public,首字母小写代表private
public的可以支持其他包的调用

如何扩充系统类型或者别人的类型

1、定义别名
2、使用组合

组合例子:
http://c.biancheng.net/view/5128.html
tree包

package tree
import "fmt"
type Node struct {Value intLeft, Right *Node
}
func (no *Node) SetValue(value int){no.Value = value
}
func (no *Node) Traverse(){if no == nil {return}no.Left.Traverse()no.Print()no.Right.Traverse()
}
func CreateNode(value int) *Node {return &Node{ value, nil, nil}
}
func (no Node)Print(){fmt.Printf("%d ",no.Value)
}

main包中使用组合扩展

package mainimport ("fmt"tree "tree"
)
type MyTreeNode struct {node *tree.Node
}
func (myNode *MyTreeNode) postOrder() {if myNode == nil || myNode.node == nil{return}left := MyTreeNode{myNode.node.Left}right := MyTreeNode{myNode.node.Right}left.postOrder()right.postOrder()myNode.node.Print()
}
func main() {var root tree.Noderoot = tree.Node{3,nil,nil}root.Left = &tree.Node{999,nil,nil}root.Right = &tree.Node{5, nil, nil}root.Right.Left = new(tree.Node)root.Left.Right = tree.CreateNode(2)root.Right.Left.SetValue(4)root.Traverse()fmt.Println()myRoot := MyTreeNode{&root}myRoot.postOrder()fmt.Print()
}

组合

Go可以通过组合另一个类型来“继承”它的所有行为,十分直观。
go的组合表达了一种Student是个人,所以Student包含了Person的所有行为,即人能做的事情Student就能做,Student骨子里也是个人

package main
type Person struct {
}
func (p *Person) Say(){println("I am a person")
}
type Student struct {Person
}