GO语言的结构体

2023-04-11 12:15:23

目录

1、定义结构体

2、访问结构体成员

3、结构体作为函数参数

4、结构体指针


结构体是值类型

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

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

1、定义结构体

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

示例

package main

import "fmt"

func main() {
	//结构体声明
	type Person struct {
		name    string
		sex     string
		age     int
		id_card int
	}
	//按顺序进行初始化
	fmt.Println("顺序初始化", Person{"oyyy", "女", 18, 1889})
    fmt.Println("按键名赋值结构体:", Person{name: "oyyy", sex: "女", id_card: 01, age: 18}
   	fmt.Println("按键名赋值结构体:", Person{name: "oyyy"})
}
##
顺序初始化 {oyyy 女 18 1889}
按键名赋值结构体: {oyyy 女 18 1}
按键名赋值结构体: {oyyy  0 0}                

2、访问结构体成员

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

结构体.成员名

示例

package main

import "fmt"

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

func main() {
	var (
		Person1 Person
		Person2 Person
	)
	//按顺序进行初始化
	Person1.name = "tom"
	Person1.sex = "男"
	Person2.age = 10
	Person2.id_card = 11
	fmt.Println(Person1)
	fmt.Println(Person2)
}
package main

import "fmt"

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

func main() {
	var (
		Person1 Person
		Person2 Person
	)
	//按顺序进行初始化
	Person1.name = "tom"
	Person1.sex = "男"
	Person2.age = 10
	Person2.id_card = 11
	fmt.Println(Person1)
	fmt.Println(Person2)
}
##
{tom 男 0 0}
{  10 11}

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 = 30
	person1.id_card = 123456

	//给person2赋值
	person2.name = "jerry"
	person2.sex = "man"
	person2.age = 25
	person2.id_card = 654321

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

}

//函数定义结构体为形式参数进行传入
func printInfo(per Person) {
	fmt.Println("姓名:", per.name)
	fmt.Println("性别:", per.sex)
	fmt.Println("年龄", per.age)
	fmt.Println("id", per.id_card)
}
##
姓名: tom
性别: man
年龄 30
id 123456
姓名: jerry
性别: man
年龄 25
id 654321

4、结构体指针

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

var struct_pointer *Books

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

struct_pointer = &Book1

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

struct_pointer.title

示例

package main

import "fmt"

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

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

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

	fmt.Println("处理前:", person1)

	updateInfo(&person1)

	fmt.Println("处理后:", person1)

}

//函数定义结构体为形式参数进行传入
func updateInfo(per *Person) {
	per.name = "jack"
}
##
处理前: {tom man 30 123456}
处理后: {jack man 30 123456}
  • 作者:oyyy3
  • 原文链接:https://blog.csdn.net/oyyy3/article/details/124462234
    更新时间:2023-04-11 12:15:23