Golang的结构体

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

内容简介: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的结构体》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

C算法(第二卷:图算法)(第3版)

C算法(第二卷:图算法)(第3版)

塞德威克(Sedgewick Robert) / 周良忠 / 第1版 (2004年1月1日) / 2004-4 / 38.0

《C算法(第2卷)(图算法)(第3版)(中文版)》所讨论的图算法,都是实际中解决图问题的最重要的已知方法。《C算法(第2卷)(图算法)(第3版)(中文版)》的主要宗旨是让越来越多需要了解这些算法的人的能够掌握这些方法及基本原理。书中根据基本原理从基本住处开始循序渐进地讲解,然后再介绍一些经典方法,最后介绍仍在进行研究和发展的现代技术。精心挑选的实例、详尽的图示以及完整的实现代码与正文中的算法和应用......一起来看看 《C算法(第二卷:图算法)(第3版)》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试