感觉每种语言都是其他的语言的一些交集,看见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)面向对象,结构体和方法相关推荐

  1. c语言学习笔记【结构体02】结构体指针变量与结构体变量的函数参数,C语言学习笔记结构体02结构体指针变量与结构体变量的函数参数.docx...

    C 语言学习笔记[结构体02]结构体指针变量与结构体变量 的函数参数 C 语言学习笔记之结构体指针变量一提指针,那可 是 C 语言的核心了,有多少学子曾拜倒在指针的脚下.单纯的说指针,其实并不难,但是 ...

  2. c语言如何宏定义枚举型结构体,C语言学习笔记--枚举结构体

    枚举 枚举是一种用户定义的数据类型,它用关键字enum以如下语法格式来声明: enum 枚举类型名字 {名字0,名字1,...,名字n}: 枚举类型名字通常并不真的使用,要用的是大括号里面的名字,因为 ...

  3. C语言学习笔记(15)——结构体程序设计

    前言 C语言的基本数据类型有整数型.实数型及字符型,使用这些基本数据类型可以构造数组类型,并且可以定义相关数据类型的指针.本节介绍的结构体类型区别于以上任何数据类型,它还能把各种不同类型的数据组合成一 ...

  4. Go语言学习-- No.11结构体--结构体内嵌

    结构体内嵌 结构体内嵌 结构体内嵌的初始化 结构体内嵌 Go语言的结构体内嵌是一种组合特性,使用结构体内嵌可构建一种面向对象编程思想中的继承关系. 结构体实例化后,可直接访问内嵌结构体的所有成员变量和 ...

  5. C语言学习笔记---嵌套结构体

      结构体不仅可以单独使用,也可以在结构体中嵌套另一个结构体.如下面的例子: struct Date{int year;int month;int day;};struct book{char tit ...

  6. C语言骚操作:结构体初始化方法

    首先定义俩结构体: typedef struct {int a0;int b0; }S0;typedef struct {int a1;int b1;S0 s0; }S1; 首先想到的初始化方法是: ...

  7. C++入门基础教程(一):C语言的指针与结构体到底怎么用?

    目录 一.前言 二.指针 2.1 指针与地址 2.2 指针与函数参数 2.3 指针与数组 2.3.1 指针与一维数组 2.3.2 指针与二维数组 2.4 字符指针与函数 2.5 指针数组以及指向指针的 ...

  8. OpenGL ES着色器语言之语句和结构体(官方文档第六章)内建变量(官方文档第七、八章)...

    OpenGL ES着色器语言之语句和结构体(官方文档第六章) OpenGL ES着色器语言的程序块基本构成如下: 语句和声明 函数定义 选择(if-else) 迭代(for, while, do-wh ...

  9. Go 语言编程 — 高级数据类型 — 结构体

    目录 文章目录 目录 结构体 访问结构体成员 向函数传递结构体 结构体指针 结构体标签(Struct Tag) 结构体 Golang 中,结构体是由一系列具有相同类型或不同类型的数据构成的数据集合.与 ...

最新文章

  1. SAP VLPOD 报错 - Update control of movement type is incorrect (entry 107 X X E B _ E) - 之对策
  2. java连接腾讯云上的redis
  3. Maven3.2创建webapp项目过程中问题以及解决方案
  4. PMP 之程序性计划、实体性计划、综合计划
  5. wpf关闭窗口弹出是否确认关闭的提示
  6. 聚合数据接口,提供开放API
  7. 简单的javascript计算器
  8. c语言关于完数(完全数,完美数)的判断及寻找
  9. 康托尔、哥德尔、图灵——永恒的金色对角线(rev#2)
  10. SVN不能Cleanup的几种解决办法
  11. 网站地图怎么做?dedecms网站地图制作方法
  12. Python带你把喜欢的视频保存~采集无水印视频
  13. T1商贸宝加密狗相关配置
  14. 【满分】【华为OD机试真题2023 JAVAJS】查找重复代码
  15. Java IO - 分类
  16. Android练手小项目--仿72g赚吧App
  17. php去除换行符的方法
  18. 【ROS入门教程】---- 01 ROS介绍
  19. 后缀自动机+DP BZOJ 3238 差异
  20. 大于4g的文件如何拷贝到u盘?

热门文章

  1. python中用于标识字符串的定界符_Python合集之Python数据类型(二)
  2. 要在某一房间中两台计算机之间实现网络通信,大学计算机计算思维导论期末考试综述.doc...
  3. Python2和python3字符编码的区别
  4. Redis Cluster 介绍与搭建
  5. java读取大txt文件_使用java读取txt里边的文件内容并获取大小(M).txt
  6. mysql web搜索系统_【20201011】做个搜索引擎(6)——网页蜘蛛代码编写(二)
  7. mysql 工具图形学_[计算机图形学]贝塞尔曲线
  8. python调用函数出现未定义_python – 为什么函数参数之外的“self”会给出“未定义”的错误?...
  9. android 应用程序分析之settings,Android 应用程序分析之Settings
  10. chrome浏览器调试手机端h5页面