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语言结构体的资料请关注本站其它相关文章!
版权声明:本站文章来源标注为YINGSOO的内容版权均为本站所有,欢迎引用、转载,请保持原文完整并注明来源及原文链接。禁止复制或仿造本网站,禁止在非www.yingsoo.com所属的服务器上建立镜像,否则将依法追究法律责任。本站部分内容来源于网友推荐、互联网收集整理而来,仅供学习参考,不代表本站立场,如有内容涉嫌侵权,请联系alex-e#qq.com处理。
                    关注官方微信