package main import ( "fmt" "reflect" ) //跟C語言或其它語言一樣,也有結構體struct。C語言中用關鍵詞typedef來給結構體定義,Go中用的都是type。struct 語法格式:type typeName struct {...} ,按照對象的理解:struct就是類,函數就是方法。 type person struct { name string age int32 } type course []string type student struct { name string age int32 grade string } type class struct { student //匿名字段,struct course //匿名字段,自定義類型 int32 //内置類型做完匿名字段 teacher string } type goods struct { name string "goods_name" price float64 "goods_price" } func main() { //單獨聲明和賦值 var p1 person p1.name = "zengzhihai" p1.age = 40 //直接聲明和賦值 p2 := person{"xiaogao", 20} //通過 field:value 的方式初始化,這樣可以任意順序 p3 := person{age: 22, name: "xiaoqing"} fmt.Println(p1, p2, p3) stu1 := class{student: student{"xiaoming", 18, "高三"}, teacher: "傑倫"} //修改course字段 stu1.course = make([]string, 6) stu1.course[0] = "math" stu1.course = append(stu1.course, "china") //修改匿名内置字段 stu1.int32 = 5 fmt.Println(stu1) g := &goods{"zhuihui", 40} s := reflect.TypeOf(g).Elem() //通過反射獲取type的定義 for i := 0; i < s.NumField(); i++ { fmt.Println(s.Field(i).Tag) // 講tag列印出來 } }
作者群: 110824698 歡迎各位Go語言學習愛好者加入。