Go语言基础:struct

来源:互联网 发布:淘宝卖家被敲诈 编辑:程序博客网 时间:2024/05/18 01:21

跟C语言或其它语言一样,也有结构体struct。C语言中用关键词typedef来给结构体定义,Go中用的都是type。

struct语法格式

type typeName struct {...}

例如:

type person struct {    name string    age int}

struct声明

var P personP.name = "Sun"P.age = 30//也可以P := peron{"Sun", 30}//通过 field:value 的方式初始化,这样可以任意顺序P := person{age:29, name:"Sun"}

上面有三种声明的方法,其中第三种比较特殊,是Go独有的声明。

struct的匿名字段

匿名字段也称为嵌入字段,C语言中也有这个功能,但是再Go中它比C更强大,更自由。

package mainimport "fmt"type Course []stringtype Student struct {    name  string    age   int32    grade string}type Class struct {    Student // 匿名字段,struct    Course  // 匿名字段,自定义的类型    int32   // 内置类型作为匿名字段    teacher string}func main() {    stu1 := Class{Student: Student{"Rob", 10, "4年纪"}, teacher: "杰伦"}    //修改Course字段    stu1.Course = make([]string, 5)    stu1.Course[0] = "English"    stu1.Course = append(stu1.Course, "Chinsese")    //修改匿名内置类型字段    stu1.int32 = 4    fmt.Print(stu1)}

输出:

{{Rob 10 4年纪} [English     Chinsese] 4 杰伦}

上面的例子,可以看出Go中的struct不仅可以将struct作为匿名字段,用type自定的类型以及内置的类型都可以作为匿名字段。这点比C语言要强大自由多了。

0 0
原创粉丝点击