• 党务问答:党组与党委有何区别? 2018-02-21
  • 杨浦区贯彻实施长护险 春节加班满足老人护理需求 2018-02-21
  •  “不打烊”不等于“全配送” 快递如何保障春节网购 2018-02-21
  • 冬奥观察:奥林匹克在“云”间 2018-02-20
  •  “不打烊”不等于“全配送” 快递如何保障春节网购 2018-02-20
  • 开创生态文明新时代 绘出美丽中国新图景 2018-02-20
  • 人民网驻阿尔及利亚记者报道集 2018-02-19
  • 党务问答:党组与党委有何区别? 2018-02-19
  • MINI车联网服务3月起升级至4G网络 增加新功能 2018-02-18
  • 以色列警方:已有足够的证据可以用于起诉以总理 2018-02-18
  • 冬奥会短节目第四 金博洋:伤病令我更强大 2018-02-18
  • 天津市北辰区委书记冯卫华:强化政治担当 把主体责任落实落细 2018-02-17
  • 正月初一客流继续回落 全国铁路预计发送旅客389万人次 2018-02-17
  • 送别余光中:诗人虽远行,乡愁永流传 2018-02-17
  • 集团原董事长违纪被查 人员伤亡事故频发 湖北宜化:去年亏损额超过公司市值 2018-02-17
  • 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程序员阅读。