在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
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) } (编辑:雷林鹏 来源:网络) |
请发表评论