欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Go - 结构体

程序员文章站 2023-01-21 23:37:48
概述结构体是将零个或多个任意类型的变量,组合在一起的聚合数据类型,也可以看做是数据的集合。声明结构体 //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)    
    }

 


运行结果:
Go - 结构体
生成 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)    
    }

 


运行结果:

Go - 结构体
改变数据

 

  //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 - 结构体