结构体

//定义
type treeNode struct {value       intleft, right *treeNode
}//工厂函数创建
func createNode(value int) *treeNode {return &treeNode{value: value} //这里返回的是局部变量的地址给外部使用(在go这样子可以的)
}func main() {var root treeNodefmt.Println(root)//创建root = treeNode{value: 3}root.left = &treeNode{}root.right = &treeNode{5, nil, nil}root.right.left = new(treeNode)fmt.Println("root:",root)fmt.Println("root.right:",root.right)fmt.Println("root.right.left:",root.right.left)nodes := []treeNode{{value: 3},{},{6, nil, &root},}fmt.Println("nodes:",nodes)root.left = createNode(2)fmt.Println("createNode:",root)
}

{0 <nil> <nil>}
root: {3 0xc00007c060 0xc00007c080}
root.right: &{5 0xc00007c0a0 <nil>}
root.right.left: &{0 <nil> <nil>}
nodes: [{3 <nil> <nil>} {0 <nil> <nil>} {6 <nil> 0xc00007c020}]
createNode: {3 0xc00007c060 0xc00007c080}

  • go仅支持封装,不支持继承和多态
  • 结构体的创建:不论地址还是结构本身,一律使用.来访问成员
  • 结构体放在堆还是栈是由go的运行机制以及环境决定的,编程者不用关心

给结构定义方法

func (node treeNode) print()  {fmt.Print("这是结构体方法打印出来的:",node.value)
}func (node *treeNode) setValue(value int) {if node == nil {fmt.Println("setting value to nil node")return}node.value = value
}//值不会变
// func (node treeNode) setValue(value int) {
//  node.value = value
// }func (node *treeNode) setValue(value int) {node.value = value
}

        root.print()fmt.Println("nsetValuen")root.right.left.setValue(9)root.right.left.print()

这是结构体方法打印出来的:3
setValue这是结构体方法打印出来的:9

func(【结构体】) 【函数名】(){}

  • func后面括号的是方法接收者(其实就跟函数的返回值一样)
  • 只有使用指针才可以改变结构的内容
  • nil指针也可以调用方法(可以将值传进来,但是nil的赋值会报错,需要做return处理)

c++结构体定义和使用_[day day go]结构体amp;给结构定义方法相关推荐

  1. java定义商品金额_老大说:谁要再用double定义商品金额,就自己收拾东西走

    先看现象 涉及诸如float或者double这两种浮点型数据的处理时,偶尔总会有一些怪怪的现象,不知道大家注意过没,举几个常见的栗子: 典型现象(一):条件判断超预期 System.out.print ...

  2. java类的定义的实例_《Java基础知识》Java类的定义及其实例化

    类必须先定义才能使用.类是创建对象的模板,创建对象也叫类的实例化. 下面通过一个简单的例子来理解Java中类的定义: public classDog { String name;intage;void ...

  3. python类定义中__init__()_转:python学习——类中为什么要定义__init__()方法

    学习Python的类,一直不太理解为什么一定要定义init()方法,现在简要谈一下自己的理解吧. 1.不用init()方法定义类 定义一个矩形的类,目的是求周长和面积. 1 classRectangl ...

  4. Python基础_第2章_Python运算符与if结构

    Python基础_第2章_Python运算符与if结构 文章目录 Python基础_第2章_Python运算符与if结构 Day02之`Python运算符与if结构` 一.昨日回顾 1.回顾昨天的课程 ...

  5. Python基础_第3章_Python中的循环结构

    Python基础_第3章_Python中的循环结构 文章目录 Python基础_第3章_Python中的循环结构 Python中的循环结构 一.回顾分支练习题 1.判断是否为一个合法三角形 2.求世界 ...

  6. c++结构体定义和使用_【C语言更新】结构体的定义及使用

    文/Edward首先先思考一个问题,假设某一天你去了一家策划公司,接到了一个策划需求,比如为新上市的某款手机写一个市场推广的文案,并且在电脑上面打印出来.那么在写这个文案的时候,你肯定是会需要着重地去 ...

  7. C++_结构体的定义和使用_结构体数组---C++语言工作笔记025

    然后我们再来去看结构体,实际上在java中,我们用类,对象比较多,用这个结构体也是很少很少. 但是c++中,用的结构体就多了. 去看看怎么创建结构体 上面这样创建.

  8. c++ 结构体初始化_【干货】c语言基础语法——结构体

    1.关于C语言结构体的引入 学习环境搭建1_Linux C语言_嵌入式开发工程师-创客学院​www.makeru.com.cn 在实际问题中有时候我们需要几种数据类型一起来修饰某个变量. 例如一个学生 ...

  9. 共用体变量不能在定义时初始化_【C语言资料更新】共用体联合体

    文/Edward 共用体又称为联合体,它是C语言中的一种特殊的数据类型.它允许用户在相同的内存位置存储不同的数据类型.用户可以定义一个带有多成员的共用体,但是任何时候这些成员都共享同一块内存.举个例子 ...

  10. 2、采用结构体数组编写程序,定义一个含职工姓名、工作年限、工资总额的结构体类型,从键盘输入5名职工的信息,最后再对工作年限超30年的职工加1000元工资,并输出工资变化后的所有职工的信息

    2.采用结构体数组编写程序,定义一个含职工姓名.工作年限.工资总额的结构体类型,从键盘输入5名职工的信息,最后再对工作年限超过30年的职工加1000元工资,并输出工资变化后的所有职工的信息(要求用下标 ...

最新文章

  1. 《基于单幅图像的快速去雾》原理与C++复现(有一定工程意义)
  2. 两边放动物对战守城的游戏_集合啦!动物森友会定制周边;百战天虫 大混战发布...
  3. 一文读懂Https的安全性原理、数字证书、单项认证、双项认证等
  4. u3d无锯齿遮罩shader-可用于ugui
  5. WPF应用程序内存泄漏的一些原因
  6. 海上瓶子下有东西吗_洗衣液瓶子我从来不扔,瓶身这样剪几刀,解决了很多家庭的大烦恼...
  7. Make WAR file 1.0
  8. 对于机器学习而言如何翻越测试集
  9. matlab单回路和串级控制回路,单回路和串级控制系统仿真研究
  10. python简单代码画皮卡丘-用python画一只可爱的皮卡丘
  11. ​两年前不知如何编写代码的我,现在是一名人工智能工程师
  12. STM32贪吃蛇实现
  13. pdf签名无效解决办法_为什么下载下来的电子合同提示有效性未知或至少一个签名有问题?...
  14. Neo4j ① <图论>图,节点,关系,属性<知识图谱和图库>图谱,图库,优势<基础>模块,应用场景,环境搭建,浏览器
  15. c++ socket 多线程 网络聊天室
  16. \tutorial_code\introduction\windows_visual_studio_Opencv
  17. 南方CASS11.0.0.8最新版安装教程附下载地址
  18. Android app开发入门复习一(1-2章)
  19. iPhone5设置铃声方法教程
  20. Android 水波纹效果实现并且适配API21以下

热门文章

  1. JavaWeb学习总结(二)——Tomcat服务器学习和使用(一)
  2. 算法提高课-动态规划-树形DP-AcWing 1072. 树的最长路径:dfs写法
  3. 汤家凤高等数学基础手写笔记-一元微分学的应用
  4. Leetcode402 remove-k-digits贪心+vector模拟栈的思想
  5. 模块就是一个普通的python程序文件_Python-模块和包
  6. linux lvs公网ip,Linux集群架构(2)LVS介绍、LVS的调度算法、NAT模式搭建、 DR模式、keepalive...
  7. 华为服务器显示红色的心跳,服务器心跳检查
  8. 继承关系中的拷贝构造函数和赋值操作重载函数分析
  9. 下边框_山寨iPhone12Pro开箱:浴霸四摄更小,下边框有点宽
  10. html支持的语音文件格式,html5中如何设置audio支持音频格式