go语言 结构体和Json
发布日期:2021-06-30 15:37:05
浏览次数:2
分类:技术文章
本文共 3142 字,大约阅读时间需要 10 分钟。
package mainimport ( "encoding/json" "fmt" "net/http")//将int定义为 myInt型type myInt int// 为MyInt添加IsZero()方法func (m myInt) IsInt() bool { return m == 0}// 为MyInt添加Add()方法func (m myInt) addInt(other int) int { return other + int(m)}//使用事件系统实现事件的响应和处理type class struct {}//给结构体添加一个 do方法func (c *class) Do(v int) { fmt.Println("This is", v)}//普通函数的Dofunc funcDo(v int) { fmt.Println("函数中的===》", v)}//内嵌和结构体内嵌//结构体可以包含一个或者多个匿名(或内嵌)字段 即这些字段没有显示名字只有字段类型是必须的 此时类型也就是字段的名字//匿名字段本身可以是一个结构体类型 即 结构体可以包含内嵌结构体type innerS struct { int1 int int2 int}type other struct { b int c float32 int innerS}type A struct { sa, ay int}type B struct { A bx, by float32}//结构体内嵌模拟类的继承//可飞行的type Flying struct {}func (f *Flying) Fly(name string) { fmt.Println(name, "I Can fly")}//可行走的type Walkble struct {}func (w *Walkble) Walk(name string) { fmt.Println(name, "I can Walk")}//人类type Man struct { Walkble}//鸟类type Bird struct { Walkble Flying}//初始化内嵌结构体//例子 车辆的组装和初始化//车轮type Wheel struct { Size int}//引擎type Engine struct { Power int Type string}//车type Car struct { Wheel Engine}//使用匿名结构体解析json数据//例子 手机为例//定义手机屏幕type Screen struct { Size float32 ResX, ResY int}//定义电池type Battery struct { Capacity int}//生成json数据func genJson() []byte { raw := &struct { Screen Battery HasTouchID bool }{ Screen: Screen{ Size: 5.5, ResX: 1920, ResY: 1080, }, // 电池参数 Battery: Battery{ 2910, }, // 是否有指纹识别 HasTouchID: true, } // 将数据序列化为json jsonData, _ := json.Marshal(raw) return jsonData}//将结构体利的数据 转换为 json//在转换 JSON 格式时,JSON 的各个字段名称默认使用结构体的名称,//如果想要指定为其它的名称我们可以在声明结构体时添加一个`json:" "`标签,在" "中可以填入我们想要的内容//声明技能结构体type Skill struct { Name string `json:"name"` Level int}//声明角色结构体type Actor struct { Name string Age int Skills []Skill}func main() { //为任意类型添加方法 //使用type关键字可以定义出新的自定义模型之后可以为自定义类型添加各种方法了 var b myInt fmt.Println(b.IsInt()) b = 2 fmt.Println(b.addInt(2)) //httP 包中的类型方法 client := &http.Client{} req, err := client.Get("http://www.baidu.com") if err != nil { fmt.Println(err) return } fmt.Println(req.Status) class := new(class) class.Do(1) //内嵌和结构体内嵌 outer := new(other) outer.b = 2 outer.c = 1.2 outer.int = 60 outer.int1 = 20 outer.int2 = 30 fmt.Println(outer) c := new(B) c.ay = 1 c.bx = 2 c.by = 3 c.sa = 4 fmt.Println(c) //实例化鸟类 bird := new(Bird) bird.Fly("鸟") bird.Walk("鸟") //实例化人类 man := new(Man) man.Walk("男人") //初始化内嵌结构体 car := Car{ Wheel: Wheel{Size: 4}, Engine: Engine{Power: 13, Type: "13T"}, } fmt.Println(car) //对json 字符串的处理 jsonData := genJson() fmt.Println(string(jsonData)) // 填充基本角色数据 Actior := Actor{ Name: "cow boy", Age: 37, Skills: []Skill{ {Name: "Roll and roll", Level: 1}, {Name: "Flash your dog eye", Level: 2}, {Name: "Time to have Lunch", Level: 3}, }, } fmt.Println(Actior) //转换为json result, err_1 := json.Marshal(Actior) if err_1 != nil { fmt.Println("error:", err) } fmt.Println(string(result))}
转载地址:https://jsonll.blog.csdn.net/article/details/103807999 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年05月01日 07时47分43秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
web服务器软件_概述
2019-05-01
tomcat_安装&卸载&启动
2019-05-01
tomcat_启动问题分析
2019-05-01
tomcat_关闭
2019-05-01
tomcat_部署项目的方式
2019-05-01
tomcat_动态java项目的目录结构
2019-05-01
Servlet_概述
2019-05-01
Servlet_快速入门
2019-05-01
Servlet_执行原理
2019-05-01
Servlet_生命周期方法
2019-05-01
Servlet_生命周期详解
2019-05-01
Servlet_3.0注解配置
2019-05-01
IDEA与tomcat相关配置
2019-05-01
Servlet_体系结构
2019-05-01
Servlet_urlpartten配置
2019-05-01
Request_原理
2019-05-01
Request_继承体系
2019-05-01
Request_获取请求行数据_方法介绍
2019-05-01
spring的优势
2019-05-01
编写jdbc的工程代码用于分析程序的耦合
2019-05-01