获取错误:结构字面量中的未知字段

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

Getting error: unknown field in struct literal

问题

我正在尝试运行这段代码:

type NullInt64 struct {
    sql.NullInt64
}

func ToNullInt64(s string) NullInt64 {
    i, err := strconv.Atoi(s)
    return NullInt64{Int64: int64(i), Valid: err == nil}
}

但是我得到了以下错误:

..\sql\sql.go:27: 在结构体字面值中未知的 NullInt64 字段 'Int64'
..\sql\sql.go:27: 在结构体字面值中未知的 NullInt64 字段 'Valid'

请注意,这个错误是由于在结构体字面值中使用了未知的字段 'Int64' 和 'Valid' 导致的。

英文:

I am trying to run this code:

type NullInt64 struct {
	sql.NullInt64
}

func ToNullInt64(s string) NullInt64 {
	i, err := strconv.Atoi(s)
	return NullInt64{Int64: int64(i), Valid: err == nil}
}

but I get this error:

..\sql\sql.go:27: unknown NullInt64 field 'Int64' in struct literal
..\sql\sql.go:27: unknown NullInt64 field 'Valid' in struct literal

答案1

得分: 4

要初始化嵌入的sql.NullInt64,你需要编写以下代码:

NullInt64{sql.NullInt64{Int64: int64(i), Valid: err == nil}}

或者,如果你的NullInt64结构体包含其他字段,你不想显式初始化它们,你可以通过使用其类型来访问嵌入字段:

NullInt64{NullInt64: sql.NullInt64{Int64: int64(i), Valid: err == nil}}
英文:

To initialize the embedded sql.NullInt64, you have to write:

NullInt64{sql.NullInt64{Int64: int64(i), Valid: err == nil}}

or, if your NullInt64 struct contains other fields which you don't want to initialize explicitly, you can access the embedded field by using its type:

NullInt64{NullInt64: sql.NullInt64{Int64: int64(i), Valid: err == nil}}

huangapple
  • 本文由 发表于 2015年10月13日 17:04:50
  • 转载请务必保留本文链接:https://go.coder-hub.com/33098460.html
匿名

发表评论

匿名网友

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

确定