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

Go - Struct 结构体

程序员文章站 2022-03-26 12:15:11
[TOC] 概述 结构体是将零个或多个任意类型的变量,组合在一起的聚合数据类型,也可以看做是数据的集合。 声明结构体 运行结果: 生成 JSON //demo_12.go package main import ( "encoding/json" "fmt" ) type Result struct ......

目录

概述

结构体是将零个或多个任意类型的变量,组合在一起的聚合数据类型,也可以看做是数据的集合。

声明结构体

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

生成 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 - Struct 结构体

改变数据

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

推荐阅读

本文欢迎转发,转发请注明作者和出处,谢谢!