Go语言-结构体

目录

前言

1、定义结构体

2、访问结构体成员

3、结构体作为函数参数

4、结构体指针


前言

数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型。

结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。

结构体表示一项纪录,比如班级的学生信息,每个人有以下属性:

Name:姓名

Sex:性别

Age:年龄

ID card :身份证

1、定义结构体

结构体定义需要使用 typestruct 语句。

type 语句设定了结构体名称。

struct 语句定义一个新的数据类型,结构体中有一个或多个成员。

语法格式:

var struct_variable_type struct {
    member definition
    member definition
    ...
    member definition
}

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

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

示例:

package main

import "fmt"

//定义结构体
func main() {
	//结构体声明
	type Person struct {
		name    string
		sex     string
		age     int
		id_card int
	}
	//按顺序进行初始化
	fmt.Println("顺序初始化结构体:", Person{"zhangsan", "男", 18, 123456789})
	//按键名赋值初始化
	fmt.Println("按键名赋值结构体:", Person{name: "qianqi", sex: "女", age: 22, id_card: 324465992})
	//部分属性赋值初始化
	fmt.Println("部分赋值结构体:", Person{name: "laoba"})
}

//运行结果为:
顺序初始化结构体: {zhangsan 男 18 123456789}
按键名赋值结构体: {qianqi 女 22 324465992}
部分赋值结构体: {laoba  0 0}

2、访问结构体成员

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

结构体.成员名

示例:

package main

import "fmt"

//定义结构体
func main() {
	//结构体声明
	type Person struct {
		name    string
		sex     string
		age     int
		id_card int
	}
	//结构体类型的变量
	var (
		person1 Person
		person2 Person
	)
	//给person1赋值
	person1.name = "tom"
	person1.sex = "man"
	person1.age = 20
	person1.id_card = 56151165

	//给person2赋值
	person2.name = "tianqi"
	person2.sex = "nv"
	person2.age = 18
	person2.id_card = 88416516

	fmt.Println(person1)
	fmt.Println(person2)
}

//运行结果为:
{tom man 20 56151165}
{tianqi nv 18 88416516}

3、结构体作为函数参数

可以像其他数据类型一样将结构体类型作为参数传递给函数。

示例:

package main

import "fmt"

//结构体声明
type Person struct {
	name    string
	sex     string
	age     int
	id_card int
}

//定义结构体
func main() {

	//结构体类型的变量
	var (
		person1 Person
		person2 Person
	)
	//给person1赋值
	person1.name = "tom"
	person1.sex = "man"
	person1.age = 20
	person1.id_card = 56151165

	//给person2赋值
	person2.name = "tianqi"
	person2.sex = "nv"
	person2.age = 18
	person2.id_card = 88416516

	//使用函数传参结构体类型数据
	personIofo(person1)
	personIofo(person2)

}

//函数定义结构体为形式参数进行传入
func personIofo(x Person) {
	fmt.Println("姓名:", x.name)
	fmt.Println("性别:", x.sex)
	fmt.Println("年龄:", x.age)
	fmt.Println("id:", x.id_card)
}

//运行结果为:
姓名: tom
性别: man
年龄: 20
id: 56151165
姓名: tianqi
性别: nv
年龄: 18
id: 88416516

4、结构体指针

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

var struct_pointer *Person

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

struct_pointer = &Person

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

struct_pointer.title

示例:

package main

import "fmt"

//结构体声明
type Person struct {
	name    string
	sex     string
	age     int
	id_card int
}

//定义结构体
func main() {

	//结构体类型的变量
	var (
		person1 Person
		person2 Person
	)
	//给person1赋值
	person1.name = "tom"
	person1.sex = "man"
	person1.age = 20
	person1.id_card = 56151165

	//给person2赋值
	person2.name = "tianqi"
	person2.sex = "nv"
	person2.age = 18
	person2.id_card = 88416516

	//使用函数传参结构体类型数据,传入地址值。
	personIofo(&person1)
	personIofo(&person2)

}

//函数定义结构体为形式参数进行传入。
func personIofo(p *Person) {
	fmt.Println("姓名:", p.name)
	fmt.Println("性别:", p.sex)
	fmt.Println("年龄:", p.age)
	fmt.Println("id:", p.id_card)
}

//运行结果为:
姓名: tom
性别: man
年龄: 20
id: 56151165
姓名: tianqi
性别: nv
年龄: 18
id: 88416516
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言中,可以使用`struct`关键字来创建结构体结构体是一种自定义的数据类型,它可以包含多个字段,每个字段可以具有不同的类型。以下是一个创建结构体的示例代码: ```go type Person struct { Name string Age int } ``` 该代码定义了一个名为Person的结构体,其中包含了两个字段:Name和Age。Name字段是一个字符串类型,Age字段是一个整数类型。要创建一个Person实例,可以使用以下代码: ```go person := Person{Name: "John", Age: 35} ``` 这将创建一个名为person的Person对象,其中Name字段设置为“John”,Age字段设置为35。要访问结构体中的字段,可以使用点符号。例如,要访问person对象的Name字段,可以使用以下代码: ```go name := person.Name ``` 这将将person对象的Name字段的值分配给name变量。同样,要访问Age字段,可以使用以下代码: ```go age := person.Age ``` 以上是如何创建和访问结构体的示例。在Go语言中,还可以使用匿名字段来创建嵌套结构体。例如,以下是一个示例代码,其中Person结构体嵌套了Address结构体: ```go type Address struct { Street string City string Country string } type Person struct { Name string Age int Address Address } ``` 在此示例中,Person结构体中包含了一个Address字段,该字段是一个Address结构体类型。要创建一个包含Address字段的Person对象,可以使用以下代码: ```go person := Person{ Name: "John", Age: 35, Address: Address{ Street: "123 Main St", City: "Anytown", Country: "USA", }, } ``` 这将创建一个Person对象,其中包含了Name、Age和Address字段。Address字段是一个Address结构体类型,并具有Street、City和Country字段。要访问Person对象中嵌套的Address结构体中的字段,可以使用以下代码: ```go street := person.Address.Street city := person.Address.City country := person.Address.Country ``` 这将将Person对象中嵌套的Address结构体中的Street、City和Country字段的值分配给street、city和country变量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值