Go语言结构体定义有几种形式,如何初始化结构体
导读:这篇文章给大家分享的是“Go语言结构体定义有几种形式,如何初始化结构体”,文中的讲解内容简单清晰,对大家认识和了解都有一定的帮助,对此感兴趣的朋友,接下来就跟随小编一起了解一下“Go语言结构体定义有几种形式,如何初始化结构体”吧。...
这篇文章给大家分享的是“Go语言结构体定义有几种形式,如何初始化结构体”,文中的讲解内容简单清晰,对大家认识和了解都有一定的帮助,对此感兴趣的朋友,接下来就跟随小编一起了解一下“Go语言结构体定义有几种形式,如何初始化结构体”吧。
概述
结构体是由一系列具有相同类型或不同类型的数据构成的数据集合
语法
定义结构体【标识自定义结构体的名称,在同一个包内不能重复】
type 结构名 struct { 字段1: 字段1的值, 字段2: 字段2的值, ...... }
例子
//学生 type Student struct { Name string //姓名 Age int //年龄 Sex bool //性别 true:男 false:女 }
结构体定义的三种形式
第一种【基本的实例化】
var stu Student
第二种【指针类型的结构体】
var stu *Student = new(Student)
第三种【取结构体的地址实例化,通过& 的操作】
var stu *Student = & Student{ }
初始化结构体
键值对初始化结构体
键值之间以:分隔;键值对之间以,分隔
变量名 := 结构体类型名{
字段1: 字段1的值,
字段2: 字段2的值,
......
}
例子
stu3 := Student{ Name: "李四", Age: 18}
值列表填充结构体
没有字段,按着序列,必须全部填充
变量名 := 结构体类型名{
字段1的值,
字段2的值,
......
}
stu4 := Student{ "王五", 18, true, }
匿名结构体
定义结构体时同时赋值
变量名 := struct{
字段1: 字段类型1,
字段2: 字段类型2,
......
}
{
// 字段值初始化
字段1: 字段1的值,
字段2: 字段2的值,
......
}
stu5 := struct { Name string Age int } { Name: "王五", Age: 18, }
访问结构体成员
赋值、访问都使用"."点这个符号
结构体.字段
var stu Student stu.Name="张三" //赋值 stu.Age=18 stu.Sex=true fmt.Println(stu.Age) //访问
结构体作为函数参数
func 函数名([结构体变量、结构体指针变量]){ }
func printStudent(stu Student) { } func printStudent(stu *Student) { }
结构体指针
使用结构体指针访问结构体成员,使用 “.” 操作符。
var 变量名 *结构名
var stu1 *Student = new(Student) stu1.Name = "李四" stu1.Age = 20 stu1.Sex = false
添加结构体方法
给结构体添加方法,在func和方法名之间加一个括号,加入该结构体的指针引用【也可以是值引用】
func ([结构体名]) 方法名([参数列表])[返回值列表]{ }
例子
var stu Student stu.Name = "张三" stu.Age = 18 stu.Sex = false //调用 stu.sayHi() //添加结构体方法 func (stu Student) sayHi() { fmt.Println(stu.Name, "Hi") }
总结
golang是非面向对象语言,也可以说go语言中的结构体类似java中的类,但是很明显缺少继承多态等等OO的特性
指针变量通过.访问结构体成员,如果是C或者C++一定要通过*访问,这是Go对它的一个优化
示例
package main import "fmt" //定义结构体【标识自定义结构体的名称,在同一个包内不能重复】 type Student struct { Name string Age int Sex bool } func main() { //struct定义的三种形式 var stu Student stu.Name = "张三" stu.Age = 18 stu.Sex = false fmt.Println(stu) var stu1 *Student = new(Student) stu1.Name = "李四" stu1.Age = 20 stu1.Sex = false fmt.Println(stu1) var stu2 *Student = & Student{ } stu2.Name = "王五" stu2.Age = 55 stu2.Sex = true fmt.Println(stu2) //初始化结构体 stu3 := Student{ Name: "李四", Age: 18} fmt.Println(stu3) stu4 := Student{ "王五", 18, true, } fmt.Println(stu4) //匿名结构体 stu5 := struct { Name string Age int } { Name: "王五", Age: 18, } fmt.Println(stu5) // printStudent(stu) printStudent(stu1) stu.sayHi() } //添加结构体方法 func (stu Student) sayHi() { fmt.Println(stu.Name, "Hi") } // func printStudent(stu Student) { // fmt.Println(stu.Name, stu.Age, stu.Sex) // } func printStudent(stu *Student) { fmt.Println(stu.Name, stu.Age, stu.Sex) }
现在大家对于Go语言结构体定义有几种形式,如何初始化结构体的内容应该都清楚了吧,希望大家阅读完这篇文章能有所收获。最后,想要了解更多Go语言结构体定义有几种形式,如何初始化结构体的知识,欢迎关注网络,网络将为大家推送更多相关知识点的文章。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Go语言结构体定义有几种形式,如何初始化结构体
本文地址: https://pptw.com/jishu/653720.html