• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

GO学习笔记:struct类型

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

  type person struct {

  name string

  age int

  }

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

  1、一个string类型的字段name,用来保存用户名称这个属性

  2、一个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"}

  3.当然也可以通过new函数分配一个指针,此处P的类型为*person

  P := new(person)

  下面我们看一个完整的使用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

  // 两个字段都写清楚的初始化

  bob := person{age:25, name:"Bob"}

  // 按照struct定义顺序初始化值

  paul := person{"Paul", 43}

  tb_Older, tb_diff := Older(tom, bob)

  tp_Older, tp_diff := Older(tom, paul)

  bp_Older, bp_diff := Older(bob, paul)

  fmt.Printf("Of %s and %s, %s is older by %d years\n",

  tom.name, bob.name, tb_Older.name, tb_diff)

  fmt.Printf("Of %s and %s, %s is older by %d years\n",

  tom.name, paul.name, tp_Older.name, tp_diff)

  fmt.Printf("Of %s and %s, %s is older by %d years\n",

  bob.name, paul.name, bp_Older.name, bp_diff)

  }

  (编辑:雷林鹏 来源:网络)


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
go排序-基数排序发布时间:2022-07-10
下一篇:
this.$router.push、replace、go的区别发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap