【发布时间】:2017-09-12 17:28:30
【问题描述】:
我发现空白标识符的使用有点难以理解。我查看了effective go 并了解了他们描述的大多数用例,但随后查看了我在路由处理程序函数中遇到的教程:
var person Person
_ = json.NewDecoder(req.Body).Decode(&person)
在第一行中,我们创建了一个 Person 类型的新空变量(先前定义的结构),然后我假设
-
&person正在通过引用传递 person var, - 由
Decode函数填充数据
然后,此函数在编码并返回 json 响应之前继续执行更多任务。
为什么我们需要将解码分配给空白标识符?我们不能只运行json.NewDecoder(req.Body).Decode(&person) 吗?如果我们不能,为什么不呢?
【问题讨论】:
-
那里不需要,但作者可能已经把它放在那里表明他们故意忽略错误值。
-
好的,这样应用时,单个空白标识符是否会忽略所有返回分配?我认为它只会忽略其中一个,就像在不良做法的例子中一样,
fi, _ := os.Stat(path) -
我不能诚实地投票结束这个问题。 OP 正在寻找对最佳实践的洞察。
-
每个空白标识符只能分配一个东西,
Decode只返回一个值。忽略错误通常是不好的做法,但在某些情况下,错误根本无关紧要;无论如何,也许不解码任何东西都是错误的。我认为这里唯一真正的问题是代码中缺少 cmets。
标签: go