其他分享
首页 > 其他分享> > go 语言结构体

go 语言结构体

作者:互联网

go语言结构体

目录

Go 语言结构体

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

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

结构体表示一项记录,比如保存图书馆的书籍记录,每本书有以下属性:


定义结构体

结构体定义需要使用 type 和 struct 语句。

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

type 语句设定了结构体的名称。结构体的格式如下:

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

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

//赋值时,前后顺序不能颠倒
variable_name := structure_variable_type {value1, value2...valuen}
或
//k:v 结构,顺序可以改变
variable_name := structure_variable_type { key1: value1, key2: value2..., keyn: valuen}

实例如下:

package main

import "fmt"

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

func main() {
  //按顺序进行初始化
	fmt.Println(Person{"zhangsna", "男", 20, 12345})

	//也可以使用  key : value 的格式
	fmt.Println(Person{name: "lili", sex: "女", age: 20, id_card: 123123})

	//忽略的字段为 该数值类型的默认值
	fmt.Println(Person{name: "wangwu", age: 18})
}


//输出结果:
{zhangsna 男 20 12345}
{lili 女 20 123123}
{wangwu  18 0}

访问结构体成员

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

结构体.成员名

结构体类型变量使用 struct 关键字定义,实例如下:

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 = 123

	//给person2进行赋值
	person2.name = "jerry"
	person2.sex = "man"
	person2.age = 25
	person2.id_card = 456

	//打印person1信息
	fmt.Println(person1)
	fmt.Printf("persion1 name: %s\n", person1.name)
	fmt.Printf("persion1 sex: %s\n", person1.sex)
	fmt.Printf("persion1 age: %d\n", person1.age)
	fmt.Printf("persion1 id_card: %d\n", person1.id_card)

	fmt.Println("---------")

	//打印person2信息
	fmt.Println(person2)
	fmt.Printf("persion2 name: %s\n", person1.name)
	fmt.Printf("persion2 sex: %s\n", person1.sex)
	fmt.Printf("persion2 age: %d\n", person1.age)
	fmt.Printf("persion2 id_card: %d\n", person1.id_card)
}

//输出结果:
{tom man 30 123}
persion1 name: tom
persion1 sex: man
persion1 age: 30
persion1 id_card: 123
---------
{jerry man 25 456}
persion2 name: tom
persion2 sex: man
persion2 age: 30
persion2 id_card: 123


结构体作为函数参数

你可以像其他数据类型一样将结构体类型作为参数传递给函数。并以以上实例的方式访问结构体变量:

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 = 123

	//给person2进行赋值
	person2.name = "jerry"
	person2.sex = "man"
	person2.age = 25
	person2.id_card = 456

	//使用函数传参结构体类型数据
	printInfo(person1)
	fmt.Println("---------")
	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: 123
---------
姓名: jerry
性别: man
年龄: 25
id: 456

结构体指针

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

var struct_pointer *Person

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

struct_pointer = &person1

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

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

	//给person2进行赋值
	person2.name = "jerry"
	person2.sex = "man"
	person2.age = 25
	person2.id_card = 456

	//使用函数传参结构体类型数据
	printInfo(&person1)
	fmt.Println("---------")
	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: 123
---------
姓名: jerry
性别: man
年龄: 25
id: 456

标签:语言,fmt,name,person2,age,person1,go,id,结构
来源: https://www.cnblogs.com/zhijiyiyu/p/16072543.html