Go语言结构体

博客 动态
0 200
羽尘
羽尘 2022-03-30 17:57:22
悬赏:0 积分 收藏

Go 语言 结构体

Go 语言 结构体

 

引言
Go 语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型
结构体是由一系列具有相同类型或不同类型的数据构成的数据集合
结构体表示一项记录,比如保存图书馆的书籍记录,每本书有以下属性:

Title :标题Author : 作者Subject:学科ID:书籍ID

 

 

一、定义结构体

二、访问结构体成员

三、结构体作为函数参数

四、结构体指针

 

 

一、定义结构体

1. 语法格式

  • 结构体定义需要使用 type 和 struct 语句
  • struct 语句定义一个新的数据类型,结构体中有一个或多个成员
  • type 语句设定了结构体的名称

结构体的格式如下

type struct_variable_type struct {	member definition	member definition	...	member definition }

  

一旦定义了结构体类型,它就能用于变量的声明,语法格式如下

variable_name := structure_variable_type {value1, value2...valuen}或variable_name := structure_variable_type { key1: value1, key2: value2..., keyn: valuen}

  

 

2. 示例

package mainimport "fmt"type Persion struct {	name    string	sex     string	age     int	id_card int}func main() {	//创建一个新的结构体	fmt.Println(Persion{"zhangsan", "男", 20, 123412424})	//使用key:value格式	fmt.Println(Persion{name: "lisi", sex: "女", age: 18, id_card: 133654623})	//忽略的字段为0或空	fmt.Println(Persion{name: "wangwu", id_card: 21352365})}//输出结果{zhangsan 男 20 123412424}{lisi 女 18 133654623}{wangwu  0 21352365}

  

 

二、访问结构体成员

  • 如果要访问结构体成员,需要使用点号.操作符,格式为:
结构体.成员名"

  

  • 结构体类型变量使用 struct 关键字定义,实例如下:
package mainimport "fmt"func main() {	//结构体声明	type Persion struct {		name string		age  int		sex  string		id   int	}	//结构体类型的变量	var (		Persion1 Persion //声明 Persion1 为 Persion 类型		Persion2 Persion //声明 Persion2 为 Persion 类型	)	//给prison1赋值	Persion1.name = "lisi"	Persion1.sex = "man"	Persion1.age = 30	Persion1.id = 56341153	//给prison2赋值	Persion2.name = "wangwu"	Persion2.sex = "woman"	Persion2.age = 18	Persion2.id = 78238232	fmt.Println(Persion1)	fmt.Println(Persion2)}//输出结果如下{lisi 30 man 56341153}{wangwu 18 woman 78238232}

  

 

三、结构体作为函数参数

结构体也可以作为参数传递给函数,可以解决一些代码的冗余问题,简化代码

  • 示例
package mainimport "fmt"//结构体声明type Persion struct {	name string	age  int	sex  string	id   int}func main() {	//结构体类型的变量	var (		Persion1 Persion //声明 Persion1 为 Persion 类型		Persion2 Persion //声明 Persion2 为 Persion 类型	)	//给prison1赋值	Persion1.name = "lisi"	Persion1.sex = "man"	Persion1.age = 30	Persion1.id = 56341153	//给prison2赋值	Persion2.name = "wangwu"	Persion2.sex = "woman"	Persion2.age = 18	Persion2.id = 78238232	//使用函数传递结构体	printInfo(Persion1)	fmt.Println("------------------")	printInfo(Persion2)}//函数定义结构体为形式参数,进行传入func printInfo(p Persion) {	fmt.Println("姓名: ", p.name)	fmt.Println("年龄: ", p.age)	fmt.Println("性别: ", p.sex)	fmt.Println("身份证: ", p.id)}//输出结果如下姓名:  lisi年龄:  30性别:  man身份证:  56341153------------------姓名:  wangwu年龄:  18性别:  woman身份证:  78238232

  

 

四、结构体指针

可以定义指向结构体的指针类似于其他指针变量,格式如下

var struct_pointer *Persion

 

以上定的指针变量可以存储结构体变量的地址,查看结构体变量的地址,可以将&符合放置于结构体变量前

struct_pointer = &Persion1

 

使用结构体指针访问结构体成员,可以使用.操作符

struct_pointer.title

  

package mainimport "fmt"//结构体声明type Persion struct {	name string	age  int	sex  string	id   int}func main() {	//结构体类型的变量	var (		Persion1 Persion //声明 Persion1 为 Persion 类型		Persion2 Persion //声明 Persion2 为 Persion 类型	)	//给prison1赋值	Persion1.name = "lisi"	Persion1.sex = "man"	Persion1.age = 30	Persion1.id = 56341153	//给prison2赋值	Persion2.name = "wangwu"	Persion2.sex = "woman"	Persion2.age = 18	Persion2.id = 78238232	//使用函数传递结构体的地址	printInfo(&Persion1)	fmt.Println("------------------")	printInfo(&Persion2)}//定义结构体指针形参进行传入func printInfo(p *Persion) {	fmt.Println("姓名: ", p.name)	fmt.Println("年龄: ", p.age)	fmt.Println("性别: ", p.sex)	fmt.Println("身份证: ", p.id)}//输出结果如下姓名:  lisi年龄:  30性别:  man身份证:  56341153------------------姓名:  wangwu年龄:  18性别:  woman身份证:  78238232

  

 

总结

结构体是由相同类型和不同类型组成的数据集合,存储的结构类型是不受限制的



 

posted @ 2022-03-30 17:45 隐姓埋名4869 阅读(0) 评论(0) 编辑 收藏 举报
回帖
    羽尘

    羽尘 (王者 段位)

    2335 积分 (2)粉丝 (11)源码

     

    温馨提示

    亦奇源码

    最新会员