英文:
Appending nil to slice results in 0 value
问题
将一个nil值追加到接口切片中会导致切片持有一个0值。[0]
var values []interface{}
values = append(values, nil)
然而,执行以下操作:
values[0] = nil
会得到我期望的结果。它会导致切片持有一个nil值
[<nil>]
我需要这个nil值传递给我的数据库驱动程序。这里发生了什么?
英文:
Appending a nil value to a slice of interfaces results in a slice holding a 0 value. [0]
var values []interface{}
values = append(values, nil)
However doing this,
values[0] = nil
does what I expected. It results in a slice holding a nil value
[<nil>]
I need the nil value to pass to my db driver. What is going on here?
答案1
得分: 4
我无法重现你的问题:append(values, nil)
正确地将一个包装为接口的 nil 添加到了切片中:
package main
import "fmt"
func main() {
var values []interface{}
values = append(values, nil)
fmt.Printf("%#v", values) // == []interface {}{interface {}(nil)}
}
请参考 http://play.golang.org/p/-unk6Hdt
英文:
I cannot reproduce your issue: append(values, nil)
properly appends a nil wrapped as an interface:
package main
import "fmt"
func main() {
var values []interface{}
values = append(values, nil)
fmt.Printf("%#v", values) // == []interface {}{interface {}(nil)}
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论