Go语言中struct内部的反引号
发布时间:2021-05-23 编辑:jiaochengji.com
教程集为您提供Go语言中struct内部的反引号等资源,欢迎您收藏本站,我们将为您提供最新的Go语言中struct内部的反引号资源
type Account struct {
// 把struct编码成json字符串时,common.Address字段的key是address
Address common.Address `json:"address"` // Ethereum account address derived from the key
// 把struct编码成json字符串时,URL字段的key是url
URL URL `json:"url"` // Optional resource locator within a backend
}
见
package main
import (
"encoding/json"
"fmt"
)
//父对象
type Human struct {
Name string `json:"english_name"` //把struct编码成json字符串时,Name字段的key是english_name,而不是Name
Age int `json:"-"` //把struct编码成json字符串时,会忽略Age这个字段
Weight float64 //`json:",string"` //编码成字符串,这个string选项只适用字符串,浮点型和整型数据
}
//子对象
type Student struct {
Human
Speciality string
Hobby []string
Score float64 `json:"total,omitempty"` //如果这个字段是空值,则不编码到JSON里面,否则用total为名字编码
Secret []byte `json:",omitempty"` //如果这个字段是空值,则不编码到JSON里面,否则用Secret为名字编码
//是一个经过base64编码的字符串
}
func main() {
json1Str := `[
{"Name": "James", "Age": 22,"Weight":65.80},
{"english_name": "Jack", "Age": 27,"Weight":78.50},
{"Name": "Kite", "Age": 19,"Weight":61.40}]`
//定义一个切片对象
var humans []Human
//json字符串转换成对象格式
err1 := json.Unmarshal([]byte(json1Str), &humans)
if err1 != nil {
fmt.Println(err1)
}
fmt.Println("json字符串转换成对象格式")
fmt.Println(humans)
fmt.Println("对象集合转换成json字符串")
//切片初始化3个对象
slice1 := []Human{
Human{Name: "James", Age: 22, Weight: 65.80},
Human{Name: "Jack", Age: 27, Weight: 78.50},
Human{Name: "Kite", Age: 19, Weight: 61.40}}
//对象集合转换成json字符串
data1, err2 := json.Marshal(slice1)
if err2 != nil {
fmt.Println(err2)
}
fmt.Println(string(data1))
fmt.Println("=======================================================================================")
stus := make([]Student, 0)
jason := Student{
Human: Human{
Name: "jason",
Age: 28,
Weight: 60.30},
Speciality: "computer science",
Hobby: []string{"tennis", "swimming", "reading"},
Score: 725.5,
Secret: []byte{'I', 20, 'L', 'o', 'v', 'e', 20, 'Y', 'o', 'u', '!'}}
stus = append(stus, jason)
fmt.Println(stus, "\n\r")
//对象集合转换成json字符串
data2, err3 := json.Marshal(stus[0])
if err3 != nil {
fmt.Println(err3)
}
fmt.Println(string(data2))
fmt.Println("=======================================================================================")
json2Str := `[
{"english_name":"jason","Weight":60.3,"Speciality":"computer science","Hobby":["tennis","swimming","reading"],"total":725.5,"Secret":"SRRMb3ZlFFlvdSE="}]`
//定义一个切片对象
var stuss []Student
//json字符串转换成对象格式
err4 := json.Unmarshal([]byte(json2Str), &stuss)
if err4 != nil {
fmt.Println(err4)
}
fmt.Println("json字符串转换成对象格式")
fmt.Println(stuss)}
到此这篇关于“Go语言中struct内部的反引号”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!
您可能感兴趣的文章:
基于类型系统的面向对象编程语言Go
Go语言学习3----Go语言特色
【Go语言入门系列】(八)Go语言是不是面向对象语言?
Go语言中struct内部的反引号
go 函数末尾缺少返回值_王垠:Go语言野心勃勃,实际情况又如何
想系统学习GO语言(Golang
golang 面试题(十三)interface内部结构和nil详解
Go语言--反射(reflect)
Golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf
Go基础编程:结构体
[关闭]