将nil附加到切片会导致其变为0值。

huangapple go评论78阅读模式
英文:

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

[&lt;nil&gt;]

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 &quot;fmt&quot;
func main() {
     var values []interface{}
     values = append(values, nil)
     fmt.Printf(&quot;%#v&quot;, values) // == []interface {}{interface {}(nil)}
}

See http://play.golang.org/p/-unk6Hdt

huangapple
  • 本文由 发表于 2013年8月6日 01:11:10
  • 转载请务必保留本文链接:https://go.coder-hub.com/18063800.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定