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語言學習愛好者加入。