Golang的结构体

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

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

查看所有标签

猜你喜欢:

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

Algorithms of the Intelligent Web

Algorithms of the Intelligent Web

Haralambos Marmanis、Dmitry Babenko / Manning Publications / 2009-7-8 / GBP 28.99

Web 2.0 applications provide a rich user experience, but the parts you can't see are just as important-and impressive. They use powerful techniques to process information intelligently and offer featu......一起来看看 《Algorithms of the Intelligent Web》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

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

Markdown 在线编辑器