【GO】JSON:结构体转json

咔咔博客之结构体转json

在这一节我们将会介绍几个新的知识点

  • interface{}
  • init()

案例

在这里会发现我们的类型是打印出来了,但是没有值,这是怎么个回事

在这里插入图片描述


那我们在来看一下这个案例
发现这个时候就会把值打印出来了,并且是一个json
那么上边那个案例为什么没哟打印出来呢!
那是因为在结构体里边定义的属性如果是首写字母是小写的话就代表的是私有属性。只有改变为大写后,别的方法才可以读取到

在这里插入图片描述

package main

import (
	"encoding/json"
	"fmt"
)

type Person struct {
	Name string
	Age  int
	Like []string
}

func main() {
	person := Person{Name: "咔咔", Age: 24, Like: []string{"咔咔博客", "咔咔手赚网"}}
	bytes, e := json.Marshal(person)
	if e != nil {
		fmt.Println("结构体转json失败,错误err是", e)
	} else {
		jsonStr := string(bytes)
		fmt.Printf("type:%T,value:%v", jsonStr, jsonStr)
	}
}

interface 讲解

使用了interface{}代表可以使用任意类型

在这里插入图片描述


在把创建映射的几种方法回顾一下

在这里插入图片描述

init

这个例子一看就可以明白
我们没有给main方法里边写任何调用,但是inti的方法里边的打印确出来了
这个就跟PHP里边的initialize()方法是一样的,都是初始化的意思

在这里插入图片描述

package main

import (
	"encoding/json"
	"fmt"
)

type Person struct {
	Name string
	Age  int
	Like []string
}

func init() {
	fmt.Printf("我是初始化函数")
}

func main() {

}

/**
结构体转json
*/
func main0() {
	person := Person{Name: "咔咔", jsonStr)
	}
}

/**
interface讲解
*/
func main1() {
	// 定义了interface 后边就可以跟任意类型了
	mMap := make(map[string]interface{})
	mMap["博客地址"] = "blog.fangkang.top"
	mMap["age"] = 21

	fmt.Println(mMap)
}

博主微信欢迎交流

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐