Golang的结构体

栏目: Go · 发布时间: 6年前

内容简介:1.Golang中的结构体的区别2.结构体的声明3.结构体方法的使用

知识点预览

1.Golang中的结构体的区别

2.结构体的声明

3.结构体方法的使用

4.结构体方法与函数的区别

1.golang中严格意义上是没有oop的思想,只是通过结构体的方式来实现了面向对象
2.golang中没有类,通过结构体可以实现同等的地位
3.golang中去除了传统的oop语法,继承,重载,构造,析构,隐藏this的特性
4.golang仍然有面向对象三大特性,只是实现和面向对象方法有所不同,没有extends关键字
5.golang中的结构体是非常灵活的,耦合度低
//结构体声明与定义
type 结构体名 struct {
  结构体属性1 type
  结构体属性2 type
  结构体属性3 type
}
//定义方式1:
var 变量名 结构体名  //把一个变量的类型声明成之前定义的结构体
变量名.字段1 //赋值
变量名.字段2 //
//定义方式2声明和定义同时进行
var 变量名 结构体 = 结构体{}  //定义同时赋值
//定义方式3
var 变量名 *结构体= new(结构体)  //返回的是一个指针
(*变量名).字段1 = 值1  //赋值方式1
变量名.字段1 = 值1   //底层自动加上了*在这个赋值的过程中
//定义方式4
var 变量名 *结构体= &结构体{}  //返回的是一个指针
(*变量名).字段1 = 值1  //赋值方式1
变量名.字段1 = 值1   //底层自动加上了*在这个赋值的过程中

//结构体的传值方式是值传递,结构体属性可以是:基本数据类型,数组,map,切片等
//定义一个结构体
type Person struct {
    Name string
}
//定义一个结构体方法
func (p Person) test() {  //其中p可以随便相当于形式参数
    fmt.Println(p.Name)
}
func main()  {
    var p1 Person
    p1.Name = "张三"
    p1.test()
}
细节:在结构体中指针形式(*a1).xx() 等价 a1.xx();(&a1).name 
等价 a1.name 因为结构体底层自动转化了
//函数
func  函数名(形参 type){
    函数体
}
函数名()  //调用时候形参定义了什么类型传递时候也是对应类型,否则无效
//结构体方法
func(形参 结构体) 方法名(形参){
}
&变量.方法  //这里比较容易混淆的,结构体方法以方法中的类型即(形参)为主
如果不是指针则不会改变,是 go 语言底层自动转换导致的

以上所述就是小编给大家介绍的《Golang的结构体》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

敏捷软件开发

敏捷软件开发

马丁 / 邓辉、孙鸣 / 人民邮电出版社 / 2008-01-01 / 69.00元

《敏捷软件开发:原则模式和实践(C#版)》不仅是一部深入浅出、生动易懂的面向对象原则与设计模式著作。而且还是一部通俗的敏捷方法导引书和快速实用的LJML教程。通过《敏捷软件开发:原则模式和实践(C#版)》你会发现,许多以前看起来非常枯燥费解的概念,忽然间都豁然开朗。变得鲜活生动起来。 C#版与此前的Java版相比,主要的更新包括加强了UML的介绍章节。使其更加贴近实战;增加了对MVP模式的介......一起来看看 《敏捷软件开发》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

随机密码生成器
随机密码生成器

多种字符组合密码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具