Go语言面向对象编程

  • 匿名字段初始化
package main

import "fmt"

type Person struct {
	name string
	sex string
	age int
	
}

type Student struct {
	//只有类型,没有名字,匿名字段,继承了Person的成员
	Person

	id int
	addr string
}

func main() {
	//顺序初始化
	s1 :=Student{Person{"hello","男",18},1,"sz"}

	fmt.Println("s1=",s1)
	//%+v,显示内容更详细
	fmt.Printf("s1 =%+v\n",s1)

	//指定成员初始化,没有初始化显示为0

	s2 :=Student{id:1}
	fmt.Printf("s2= %+v\n",s2)	
}
  • 成员操作
package main

import "fmt"

type Person1 struct {
	name string
	sex string
	age int
}
type Student1 struct {
	Person1
	id int
	addr string
}

func main() {
	s1 :=Student1{Person1{"hello","女",18},1,"深圳"}
	s1.name = "world"
	s1.sex ="女"
	s1.age=18
	s1.addr="Chain"
	s1.id=1

	s1.Person1 =Person1{"张三","男",20}

	fmt.Println(s1.name,s1.age,s1.id,s1.sex,s1.addr)

}
  • 通过结构体生成json
package main

import (
	"encoding/json"
	"fmt"
)
//成员变量名首字母必须大写
type IT struct {
	Company string
	Subject []string
	Isok bool
	Price float64

}
func main() {

	//定义结构体变量,同时初始化
	s := IT{"haha",[]string{"go","C++","python"},true,444.44}

	//result ,err :=json.Marshal(s)
	//格式化编码输出
	result ,err :=json.MarshalIndent(s,""," ")
	if err !=nil {
		fmt.Println("err=",err)
		return
	}
	fmt.Println("result= ",string(result))
}
  • 通过map生成json
package main

import (
	"encoding/json"
	"fmt"
)

func main() {
	//创建一个map

	m := make(map[string]interface{}, 4)
	m["company"] = "it"
	m["subjects"] = []string{"Go", "Python", "c++"}
	m["isok"] = true
	m["price"] = 666

	//编码为json
	//result ,err :=json.Marshal(m)
	result, err := json.MarshalIndent(m, "", " ")

	if err != nil {
		return

	}
	fmt.Println("result= ", string(result))

}
  • json解析到结构体
package main

import (
	"encoding/json"
	"fmt"
)

type I struct {
	Company string `json:"company"`
	Subjects []string `json:"subjects"`
	IsOk bool `json:"isok"`
	Price float64 `json:"price"`


} 
func main() {
	jsonBuf := `{

 "company": "hello",
 "isok": true,
 "price": 666,
 "subjects": [
  "Go",
  "Python",
  "c++"
 ]
}`

	//定义一个结构体变量
	var tmp  I
	err :=json.Unmarshal([]byte(jsonBuf),&tmp) //第二个的参数要地址传递
	if err !=nil {
		fmt.Println("err=",err)
		return

	}
	//fmt.Println("tmp=",tmp)
	fmt.Printf("tmp = %+v\n",tmp)


}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值