• GO学习笔记:struct类型


      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 ",

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

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

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

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

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

      }

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

  • 相关阅读:
    线程的用法
    提高VS2010的性能,VS2010不再卡
    win7 远程桌面最大化快捷键
    java类加载器
    Class类
    JDBC获得oracle数据库主键值
    Zookeeper入门基础知识
    项目js总结
    jdk8 stream项目使用
    全局请求参数去除空格
  • 原文地址:https://www.cnblogs.com/pengpeng1208/p/9706955.html
Copyright © 2020-2023  润新知