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

查看所有标签

猜你喜欢:

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

重构

重构

Martin Fowler / 熊节 / 人民邮电出版社 / 2010 / 69.00元

重构,一言以蔽之,就是在不改变外部行为的前提下,有条不紊地改善代码。多年前,正是本书原版的出版,使重构终于从编程高手们的小圈子走出,成为众多普通程序员日常开发工作中不可或缺的一部分。本书也因此成为与《设计模式》齐名的经典著作,被译为中、德、俄、日等众多语言,在世界范围内畅销不衰。 本书凝聚了软件开发社区专家多年摸索而获得的宝贵经验,拥有不因时光流逝而磨灭的价值。今天,无论是重构本身,业界对重......一起来看看 《重构》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

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

正则表达式在线测试