在这一节我们将会介绍几个新的知识点
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{}代表可以使用任意类型
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: "咔咔", 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讲解 */ func main1() { // 定义了interface 后边就可以跟任意类型了 mMap := make(map[string]interface{}) mMap["博客地址"] = "blog.fangkang.top" mMap["age"] = 21 fmt.Println(mMap) }