|
@@ -1,86 +0,0 @@
|
|
|
-/*
|
|
|
- * @description:struct相关知识
|
|
|
- * @Author: CP
|
|
|
- * @Date: 2020-08-21 09:34:47
|
|
|
- * @FilePath: \construction_management\learn\struct.go
|
|
|
- */
|
|
|
-package learn
|
|
|
-
|
|
|
-import (
|
|
|
- "fmt"
|
|
|
-)
|
|
|
-
|
|
|
-/*
|
|
|
-没有class,只有struct结构体
|
|
|
-没有构造函数,可以加工厂函数来构造
|
|
|
-结构体过大也考虑使用指针接收者
|
|
|
-结构体的方法的封装
|
|
|
-首字母大写:public
|
|
|
-首字母小写:private 只是针对包
|
|
|
-包
|
|
|
-每个目录一个包,为结构体定义的方法必须在同一个包内
|
|
|
-结构体的方法可以分散在不同的文件内,同一个包内
|
|
|
-
|
|
|
-扩展其他人写的包-学习go语言4-3
|
|
|
-*/
|
|
|
-type TreeNode struct {
|
|
|
- Value int
|
|
|
- // *类型是指针
|
|
|
- Left, Right *TreeNode
|
|
|
-}
|
|
|
-
|
|
|
-//为结构定义方法-方法名称前 定义好 (node treeNode)
|
|
|
-//显示定义和命名方法接收者
|
|
|
-func (node TreeNode) Print() {
|
|
|
- fmt.Println(node.Value)
|
|
|
-}
|
|
|
-
|
|
|
-//这里不使用指针是改不掉里面的值 node treeNode,需要指针
|
|
|
-//只有使用指针才可以改变结构内容 nil指针也能调用方法
|
|
|
-func (node *TreeNode) SetValue(value int) {
|
|
|
- node.Value = value
|
|
|
-}
|
|
|
-
|
|
|
-//遍历结构体treeNode
|
|
|
-func (node *TreeNode) Traveres() {
|
|
|
- if node == nil {
|
|
|
- return
|
|
|
- }
|
|
|
- //如果在其他语言node.left是nil调用traveres()会挂掉,在go语言中不会
|
|
|
- node.Left.Traveres()
|
|
|
- node.Print()
|
|
|
- node.Left.Traveres()
|
|
|
- node.Print()
|
|
|
-}
|
|
|
-
|
|
|
-//工厂函数来构造treeNode
|
|
|
-func CreateTreeNode(value int) *TreeNode {
|
|
|
- return &TreeNode{Value: value}
|
|
|
-}
|
|
|
-
|
|
|
-// func main() {
|
|
|
-// // 创建结构的方式1
|
|
|
-// var root2 treeNode
|
|
|
-// fmt.Println(root2)
|
|
|
-// // 创建结构的方式2
|
|
|
-// root := treeNode{value: 3}
|
|
|
-// //&取地址
|
|
|
-// root.left = &treeNode{}
|
|
|
-// // 创建结构的方式3
|
|
|
-// root.left.right = new(treeNode)
|
|
|
-// // 创建结构的方式4
|
|
|
-// root.left.left = createTreeNode(2)
|
|
|
-// // 创建结构的方式5
|
|
|
-// node := []treeNode{
|
|
|
-// {value: 3},
|
|
|
-// {},
|
|
|
-// {6, nil, nil},
|
|
|
-// }
|
|
|
-// fmt.Println(node)
|
|
|
-
|
|
|
-// //调用结构体方法
|
|
|
-// root.print()
|
|
|
-// root.right.left.setValue(2)
|
|
|
-// root.right.left.print()
|
|
|
-// root.traveres()
|
|
|
-// }
|