• 合众人寿阜阳中支因部分保单客户信息不真实被罚款10万元 2018-07-17
  • 顾客网购电视安装时发现屏裂 因已开箱无法正常退货 2018-07-17
  • 20多年未开口的央视女主播 在政协会上说了什么? 2018-07-17
  • 为什么只有韩国能生产大尺寸OLED?中国不行 2018-07-16
  • “高盐值”真面目 这些食品不咸也高盐 2018-07-16
  • 山西太原:出租车拟调价以应对网约车市场冲击 2018-07-15
  • 默勒镇多措并举全面打响生态环境保护攻坚战 2018-07-15
  • 去年广州专利申请量首破10万件 2018-07-15
  • 冬日浪漫礼遇 圣诞节游戏里“约“起来 2018-07-15
  • 中国空军歼-10C战机担负战斗值班任务 2018-07-15
  • 三国是我对生命话题的探讨 2018-07-15
  • 台媒:大陆宠物旅馆春节一床难求 豪华单间一天800元 2018-07-14
  • 大学生:这个寒假不一样(教育眼) 2018-07-14
  • 女性消费释放诱人商机 市场规模接近2.5万亿元 2018-07-14
  • “会升值”的收藏品盯上老年人钱包 往往没见到实物 2018-07-13
  • GO学习笔记:struct类型

    栏目: GO语言 发布于: 2014-08-21 17:24:20

    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\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)
    }

    本站文章除注明转载外,均为本站原创或编译?;队魏涡问降淖?,但请务必注明出处。
    转载请注明:文章转载自 七星彩票平台
    本文标题:GO学习笔记:struct类型
    IT技术书籍推荐:
    深入PHP:面向对象、模式与实践(第3版)
    深入PHP:面向对象、模式与实践(第3版)
    Mart Zandstra (作者), 陈浩 (译者), 吴孙滨 (译者), 胡丹 (译者), 李静 (译者)
    《深入PHP:面向对象、模式与实践(第3版)》是PHP专家经典力作的最新版本。书中主要介绍了如何使用面向对象技术和设计模式编写稳定的、可维护的代码,如何使用Subversion管理多个开发人员,如何使用Phing和PEAR进行构建和安装,以及将构建和测试过程自动化的策略,包括持续集成?!渡钊隤HP:面向对象、模式与实践(第3版)》适合中高级PHP程序员阅读。