7. struct类型

struct

Go语言中,也和C或者其他语言一样,我们可以声明新的类型,作为其它类型的属性或字段的容器。例如,我们可以创建一个自定义类型 person 代表一个人的实体。这个实体拥有属性:姓名和年龄。这样的类型我们称之struct。如下代码所示:

type person struct {
   
    name string
    age int
}

看到了吗?声明一个struct如此简单,上面的类型包含有两个字段

  • 一个string类型的字段name,用来保存用户名称这个属性
  • 一个int类型的字段age,用来保存用户年龄这个属性

如何使用struct呢?请看下面的代码

type person struct {
   
    name string
    age int
}
var P person // P 现在就是 person 类型的变量了
P.name = "Astaxie" //  赋值 "Astaxie" 给 P 的 name 属性 .
P.age = 25 //  赋值 "25" 给变量 P 的 age 属性
fmt.Printf("The person's name is %s", P.name) //  访问 P 的 name 属性 .

除了上面这种P的声明使用之外,还有两种声明使用方式

  • 1.按照顺序提供初始化值
    P := person{“Tom”, 25}
  • 2.通过 field:value 的方式初始化,这样可以任意顺序
    P := person{age:24, name:“Tom”}

下面我们看一个完整的使用struct的例子

package main
import "fmt"
//  声明一个新的类型
type person struct {
   
    name string
    age int
}
//  比较两个人的年龄,返回年龄大的那个人,并且返回年龄差
// struct 也是传值的
func Older(p1, p2 person) (person, int) {
   
    if p1.age>p2.age {
    //  比较 p1 和 p2 这两个人的年龄
    	return p1, p1.age-p2.age
    }
    return p2, p2.age-p1.age
}
func main() {
   
    var tom person
    //  赋值初始化
    tom.name, tom.age = "Tom", 18
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值