2022/02/11 //舒适的环境很难培养出坚强的品格,被安排好的人生也很难做出伟大的事业
package main
import (
"encoding/json"
"fmt"
)
type Monster struct {
Name string `json:"name"`
Age int
Birthday string
Sal float64
Skill string
}
func testStruct() {
monster := Monster{
Name: "牛魔王",
Age: 500,
Birthday: "20220211",
Sal: 1000.0,
Skill: "牛魔拳",
}
data, err := json.Marshal(monster)
if err != nil {
fmt.Println("序列化错误", err)
}
fmt.Println(string(data))
//data是序列化的格式,接下来把data反序列化
var monster2 Monster
err2 := json.Unmarshal(data, &monster2)
if err2 != nil {
fmt.Println("反序列化失败", err)
return
}
fmt.Println("反序列化成功")
fmt.Println(monster2)
}
func testMap() {
//var myMap map[string]interface{}
myMap := make(map[string]interface{})
myMap["name"] = "红孩儿"
myMap["age"] = 100
myMap["Birthday"] = "20000"
myMap["Sal"] = 100.5
data, err := json.Marshal(myMap)
if err != nil {
fmt.Println("序列化错误", err)
}
fmt.Println(string(data))
//data是序列化的格式,接下来把data反序列化
var myMap2 map[string]interface{}
err2 := json.Unmarshal(data, &myMap2)
if err2 != nil {
fmt.Println("反序列化失败", err)
return
}
fmt.Println("反序列化成功")
fmt.Println(myMap2)
}
func testSlice() {
var slice []map[string]interface{}
map1 := make(map[string]interface{})
map1["name"] = "map1"
map1["age"] = 10
map1["Birthday"] = "1002"
map1["Sal"] = "map1~"
map2 := make(map[string]interface{})
map2["name"] = "map2"
map2["age"] = 10
map2["Birthday"] = [2]string{"1003", "qweqw"}
map2["Sal"] = "map1~"
slice = append(slice, map1)
slice = append(slice, map2)
data, err := json.Marshal(slice)
if err != nil {
fmt.Println("序列化错误", err)
}
fmt.Println(string(data))
var slice2 []map[string]interface{}
err2 := json.Unmarshal(data, &slice2)
if err2 != nil {
fmt.Println("反序列化失败", err)
return
}
fmt.Println("反序列化成功")
fmt.Println(slice2)
}
func main() {
testStruct()
testMap()
testSlice()
}
//cal_test.go包
package main
import (
"testing"
)
//编写测试用例,去测试addUpper()是否正确
//命令台指令补充
//直接测试所有文件函数
// go test -v
//测试单个函数
//go test -v -run 测试函数名字
//测试单个文件
//go test -v xxx_test.go xxx.go
func TestAddUpper(t *testing.T) {
//调用
res := addUpper(11)
if res != 55 {
t.Fatalf("结果错误,期望值%v, 实际%v", 55, res)
}
//如果正确输出日志
t.Logf("执行正确!")
}
func TestGetSum(t *testing.T) {
//调用
res := getSum(11, 12)
if res != 2223 {
t.Fatalf("结果错误,期望值%v, 实际%v", 23, res)
}
//如果正确输出日志
t.Logf("执行正确!")
//测试单个函数
//go test -v -run 测试函数名字
//测试单个文件
//go test -v xxx_test.go xxx.go
}
//cal.go包
package main
func addUpper(n int) int {
res := 0
for i := 1; i <= n-1; i++ {
res += i
}
return res
}
func getSum(n1 int, n2 int) int {
return n1 + n2
}