小编ken*_*ire的帖子

如何在Go中解组时识别空值和未指定的字段?

我想知道是否可以区分空值和未指定的字段值.

这是一个例子:

var jsonBlob = []byte(`[
    {"Name": "A", "Description": "Monotremata"},
    {"Name": "B"},
    {"Name": "C", "Description": ""}
]`)

type Category struct {
    Name  string
    Description string
}

var categories []Category
err := json.Unmarshal(jsonBlob, &categories)

if err != nil {
    fmt.Println("error:", err)
}
fmt.Printf("%+v", categories)
Run Code Online (Sandbox Code Playgroud)

也可以在这里找到:https://play.golang.org/p/NKObQB5j4O

输出:

[{Name:A Description:Monotremata} {Name:B Description:} {Name:C Description:}]
Run Code Online (Sandbox Code Playgroud)

那么在这个例子中是否可以将类别B的描述与类别C区分开来?

我只是希望能够区分它们在程序中有不同的行为.

json go unmarshalling

4
推荐指数
1
解决办法
105
查看次数

如何比较golang中的错误

上下文:我正在做单元测试,并试图检查是否出现预期的错误。

我没有得到预期的结果,所以我尝试了一些与精确错误进行比较的简单操作,但惊讶的是,比较结果返回“ false”

e1 := errors.New("error")
e2 := errors.New("error")
fmt.Println(e1 == e2) // false
Run Code Online (Sandbox Code Playgroud)

运行示例:https//play.golang.org/p/cvjjiJT_5T

有人可以解释一下为什么它返回false以及如何正确检查错误之间的相等性吗?

error-handling unit-testing go

2
推荐指数
1
解决办法
2299
查看次数

如何在 Go 中从一个文件读取多个 JSON 对象

如何使用 Unmarshal 读取包含两个不同对象的 JSON 文件?

JSON 示例:

这是JSON文件对应的结构。

{
  "mysql": {
    "address": "127.0.0.1",
    "port": "3306",
    "user": "user",
    "password": "password",
    "database": "database"
  },
  "postgres": {
    "address": "127.0.0.2",
    "port": "3306",
    "user": "user2",
    "password": "password2",
    "database": "database2"
  }
}
Run Code Online (Sandbox Code Playgroud)

代码片段:

{
  "mysql": {
    "address": "127.0.0.1",
    "port": "3306",
    "user": "user",
    "password": "password",
    "database": "database"
  },
  "postgres": {
    "address": "127.0.0.2",
    "port": "3306",
    "user": "user2",
    "password": "password2",
    "database": "database2"
  }
}
Run Code Online (Sandbox Code Playgroud)

json go unmarshalling

1
推荐指数
1
解决办法
3134
查看次数

标签 统计

go ×3

json ×2

unmarshalling ×2

error-handling ×1

unit-testing ×1