go语言学习(3)面向对象,结构体和方法
感觉每种语言都是其他的语言的一些交集,看见go就有种kotlin和C的孩子的感觉,虽然我并不清楚他们之间的借鉴关系
go语言仅支持封装,不支持继承和多态
go语言只有struct没有class
go语言的结构的定义和C++类似
type treeNode struct {value intleft, right *treeNode
}
为结构定义方法:
func (node treeNode) print() { //接收者相当于this,这个方法相当于kotlin的扩展方法fmt.Print(node.value, " ")
}
显示定义和命名方法接收者
使用指针作为方法接受者
func (node *treeNode) setValue(value int) {node.value = value
}
只有指针才可以改变结构内容
nil指针也可以调用方法!
func (node *treeNode) setValue(value int) {if(node == nil) {fmt.Println("Setting value to nil node, ignore it")}node.value = value
}
也就是通过这样的方式可以解决java中最常见的空指针异常的问题,这个问题是一个大问题,所以现在我尽可能使用kotlin开发android应用,java开发过程中的空指针问题真的是一种很麻烦的问题
常见操作(二叉树的中序遍历操作)
//中序遍历操作,基本操作
func (node *treeNode) traverse() {if node == nil {return}node.left.traverse()node.print()node.right.traverse()
}
值接收者和指针接收者的使用
1.要改变内容必须使用指针接收者
2.结构过大也考虑指针接收者
3.一致性:如有指针接收者,最好都是指针接收者
4.值接受者是go语言特有的
5.值/指针均可接收值/指针,并不会改变调用的方式,go语言在这方面很智能
go语言学习(3)面向对象,结构体和方法相关推荐
- c语言学习笔记【结构体02】结构体指针变量与结构体变量的函数参数,C语言学习笔记结构体02结构体指针变量与结构体变量的函数参数.docx...
C 语言学习笔记[结构体02]结构体指针变量与结构体变量 的函数参数 C 语言学习笔记之结构体指针变量一提指针,那可 是 C 语言的核心了,有多少学子曾拜倒在指针的脚下.单纯的说指针,其实并不难,但是 ...
- c语言如何宏定义枚举型结构体,C语言学习笔记--枚举结构体
枚举 枚举是一种用户定义的数据类型,它用关键字enum以如下语法格式来声明: enum 枚举类型名字 {名字0,名字1,...,名字n}: 枚举类型名字通常并不真的使用,要用的是大括号里面的名字,因为 ...
- C语言学习笔记(15)——结构体程序设计
前言 C语言的基本数据类型有整数型.实数型及字符型,使用这些基本数据类型可以构造数组类型,并且可以定义相关数据类型的指针.本节介绍的结构体类型区别于以上任何数据类型,它还能把各种不同类型的数据组合成一 ...
- Go语言学习-- No.11结构体--结构体内嵌
结构体内嵌 结构体内嵌 结构体内嵌的初始化 结构体内嵌 Go语言的结构体内嵌是一种组合特性,使用结构体内嵌可构建一种面向对象编程思想中的继承关系. 结构体实例化后,可直接访问内嵌结构体的所有成员变量和 ...
- C语言学习笔记---嵌套结构体
结构体不仅可以单独使用,也可以在结构体中嵌套另一个结构体.如下面的例子: struct Date{int year;int month;int day;};struct book{char tit ...
- C语言骚操作:结构体初始化方法
首先定义俩结构体: typedef struct {int a0;int b0; }S0;typedef struct {int a1;int b1;S0 s0; }S1; 首先想到的初始化方法是: ...
- C++入门基础教程(一):C语言的指针与结构体到底怎么用?
目录 一.前言 二.指针 2.1 指针与地址 2.2 指针与函数参数 2.3 指针与数组 2.3.1 指针与一维数组 2.3.2 指针与二维数组 2.4 字符指针与函数 2.5 指针数组以及指向指针的 ...
- OpenGL ES着色器语言之语句和结构体(官方文档第六章)内建变量(官方文档第七、八章)...
OpenGL ES着色器语言之语句和结构体(官方文档第六章) OpenGL ES着色器语言的程序块基本构成如下: 语句和声明 函数定义 选择(if-else) 迭代(for, while, do-wh ...
- Go 语言编程 — 高级数据类型 — 结构体
目录 文章目录 目录 结构体 访问结构体成员 向函数传递结构体 结构体指针 结构体标签(Struct Tag) 结构体 Golang 中,结构体是由一系列具有相同类型或不同类型的数据构成的数据集合.与 ...
最新文章
- SAP VLPOD 报错 - Update control of movement type is incorrect (entry 107 X X E B _ E) - 之对策
- java连接腾讯云上的redis
- Maven3.2创建webapp项目过程中问题以及解决方案
- PMP 之程序性计划、实体性计划、综合计划
- wpf关闭窗口弹出是否确认关闭的提示
- 聚合数据接口,提供开放API
- 简单的javascript计算器
- c语言关于完数(完全数,完美数)的判断及寻找
- 康托尔、哥德尔、图灵——永恒的金色对角线(rev#2)
- SVN不能Cleanup的几种解决办法
- 网站地图怎么做?dedecms网站地图制作方法
- Python带你把喜欢的视频保存~采集无水印视频
- T1商贸宝加密狗相关配置
- 【满分】【华为OD机试真题2023 JAVAJS】查找重复代码
- Java IO - 分类
- Android练手小项目--仿72g赚吧App
- php去除换行符的方法
- 【ROS入门教程】---- 01 ROS介绍
- 后缀自动机+DP BZOJ 3238 差异
- 大于4g的文件如何拷贝到u盘?
热门文章
- python中用于标识字符串的定界符_Python合集之Python数据类型(二)
- 要在某一房间中两台计算机之间实现网络通信,大学计算机计算思维导论期末考试综述.doc...
- Python2和python3字符编码的区别
- Redis Cluster 介绍与搭建
- java读取大txt文件_使用java读取txt里边的文件内容并获取大小(M).txt
- mysql web搜索系统_【20201011】做个搜索引擎(6)——网页蜘蛛代码编写(二)
- mysql 工具图形学_[计算机图形学]贝塞尔曲线
- python调用函数出现未定义_python – 为什么函数参数之外的“self”会给出“未定义”的错误?...
- android 应用程序分析之settings,Android 应用程序分析之Settings
- chrome浏览器调试手机端h5页面