Go - 结构体
程序员文章站
2022-04-30 17:30:23
概述结构体是将零个或多个任意类型的变量,组合在一起的聚合数据类型,也可以看做是数据的集合。声明结构体 //demo_11.go package main import ( "fmt" ) type Person struct { Name string Age int } func main() { ......
概述
结构体是将零个或多个任意类型的变量,组合在一起的聚合数据类型,也可以看做是数据的集合。
声明结构体
//demo_11.go
package main
import (
"fmt"
)
type person struct {
name string
age int
}
func main() {
var p1 person
p1.name = "tom"
p1.age = 30
fmt.println("p1 =", p1)
var p2 = person{name:"burke", age:31}
fmt.println("p2 =", p2)
p3 := person{name:"aaron", age:32}
fmt.println("p2 =", p3)
//匿名结构体
p4 := struct {
name string
age int
} {name:"匿名", age:33}
fmt.println("p4 =", p4)
}
运行结果:
生成 json
//demo_12.go
package main
import (
"encoding/json"
"fmt"
)
type result struct {
code int `json:"code"`
message string `json:"msg"`
}
func main() {
var res result
res.code = 200
res.message = "success"
//序列化
jsons, errs := json.marshal(res)
if errs != nil {
fmt.println("json marshal error:", errs)
}
fmt.println("json data :", string(jsons))
//反序列化
var res2 result
errs = json.unmarshal(jsons, &res2)
if errs != nil {
fmt.println("json unmarshal error:", errs)
}
fmt.println("res2 :", res2)
}
运行结果:
改变数据
//demo_13.go
package main
import (
"encoding/json"
"fmt"
)
type result struct {
code int `json:"code"`
message string `json:"msg"`
}
func main() {
var res result
res.code = 200
res.message = "success"
tojson(&res)
setdata(&res)
tojson(&res)
}
func setdata (res *result) {
res.code = 500
res.message = "fail"
}
func tojson (res *result) {
jsons, errs := json.marshal(res)
if errs != nil {
fmt.println("json marshal error:", errs)
}
fmt.println("json data :", string(jsons))
}
运行结果:
上一篇: 吃火锅也可以吃成恐怖片
下一篇: Go-包