package main import ( "fmt" "encoding/json" ) func main() { //结构体的定义 type cat struct { Name string Age int hobby string } //map的key为学号,map的值为结构体,包含名字,年龄和地址。 var cat1 cat cat1.Name="love" cat1.Age =18 fmt.Println(cat1) //指针,slice,map需要先Make作为field使用 type Person struct { Name string `json:"name"` //结构体的标签 Age int `json:"age"` //Scores [5]float64 //ptr *int //slice []int //map1 map[string]string } var person1 Person //person1.slice = make([]int, 10) //person1.map1 = make(map[string]string) fmt.Println(person1) //方式2 推荐 person2 := Person{"tom", 18} fmt.Println(person2) //方式3 指针 底层做了优化,可以不用指针的形式 var person3 *Person = new(Person) person3.Name = "Tom" person3.Age = 20 fmt.Println(person3) //方式4 可以直接赋初值,但是所有字段都要赋值 var per *Person = &Person{"marry", 60} per.Name="da" //指针 可以改变原变量数值 var p1 Person = Person{"marry", 60} p1.Name = "Tom" var p2 *Person = &p1 p2.Name="Love" fmt.Println("P1:",p1) //使用tag json序列化 使用json包 结构体field必须大写 jsonStr,err := json.Marshal(person2) if err != nil{ fmt.Println("出错") } fmt.Println(string(jsonStr)) }