go 定义一个结构体并赋初始值_Go教程第十一篇:结构体

本文详细介绍了Go语言中的结构体,包括如何声明结构体、命名结构体与匿名结构体的创建、结构体的零值、访问字段、结构体指针、匿名字段、嵌套结构体、导出结构体字段以及结构体的相等性。通过示例代码展示了结构体的使用方法,帮助读者理解Go语言中结构体的概念和操作。
摘要由CSDN通过智能技术生成

结构体

本文我们着重讲解一下Go语言中的结构体。

什么是结构体 ?

结构体是用户定义的数据类型,它表示了一组字段的集合。当我们需要把一组数据汇集成单一的逻辑单元而不是把这些数据各自处理成单独的类型。例如,雇员有姓氏、名称、年龄,那我们就可以把这三个字段构造成一个单独的结构体employee。

声明一个结构体

type Employee struct{

firstName string

lastName string

age int

}

上面的代码声明了一个结构体类型Employee,它有firstName,lastName, age这三个字段。这个结构体还可以更紧凑一些,我们可以把相同类型的字段放在同一行代码里面声明。例如,firstName和lastName都属于string类型,因此我们可以把上面的程序写成如下:

type Employee struct{

firstName,lastName string

age, salary int

}

上面的Employee结构体,我们称它为命名结构体,因为它创建了一个名为Employee的新类型。今后我们就可以使用Employee这个新类型创建一个Employee类型的结构体。

除此之外,在声明结构体时,还可以不声明一个新类型,这种类型的结构体被称为匿名结构体。

var employee struct {

firstName, lastName string

age int

}

上面的代码段创建了一个匿名结构体employee。

创建一个命名结构体

我们使用下面这个简单的程序来创建一个命名的结构体类型Employee。

package main

import (

"fmt"

)

type Employee struct {

firstName, lastName string

age, salary int

}

func main() {

//creating structure using field names

emp1 := Employee{

firstName: "Sam",

age: 25,

salary: 500,

lastName: "Anderson",

}

//creating structure without using field names

emp2 := Employee{"Thomas", "Paul", 29, 800}

fmt.Println("Employee 1", emp1)

fmt.Println("Employee 2", emp2)

}

在上面的程序中,我们定义了一个结构体类型Employee。我们又定义了一个结构体变量emp1,给它的每个字段都赋予了值。像这样的情况,字段名称的顺序没必要一定要和结构体声明时的顺序保持一致。

同时,我们还定义了一个结构体变量emp2,在定义emp2时,我们省略了字段名称,在这种情况,就必须使字段的顺序和声明结构体时的顺序保持一致。

程序的输出结构如下:

Employee 1 {Sam Anderson 25 500}

Employee 2 {Thomas Paul 29 800}

创建匿名结构体

package main

import (

"fmt"

)

func main() {

emp3 := struct {

firstName, lastName string

age, salary int

}{

firstName: "Andreah",

lastName: "Nikola",

age: 31,

salary: 5000,

}

fmt.Println("Employee 3", emp3)

}

在上面的程序中,我们定义了一个匿名结构体变量emp3。像我们之前提到的,这种结构体类型称为匿名结构体。因为它仅创建了一个结构体变量emp3,而并没有定义任何的新结构体类型。

程序的输出如下:

Employee 3 {Andreah Nikola 31 5000}

结构体的零值

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值