我正在使用这个库来访问couchDB(特定于cloudant)“github.com/mikebell-org/go-couchdb”,我注意到了一个问题。
当我将文件添加到数据库并传入结构时,只会添加以大写字母开头的结构字段。
例如
type Person struct {
name string
Age int
}
func main() {
db, _ := couchdb.Database(host, database, username, password)
joe := Person{
name: "mike",
Age: 190,
}
m, _ := db.PostDocument(joe)
}
在这种情况下,只有“age”字段已更新并插入我的数据库。
我在另一个案例中也注意到了这个问题 - 当我做这样的事情时:
type Sample struct {
Name string
age int
}
joe := Sample{
Name: "xx",
age: 23,
}
byt, _ := json.Marshal(joe)
post_data := strings.NewReader(string(byt))
fmt.Println(post_data)
在这种情况下,只会打印出姓名:
output : &{{"Name":"xx"} 0 -1}
这是为什么?如果我想要一个小写的字段并且在数据库中,那可能吗?
答案 0 :(得分:34)
这是因为只导出以大写字母开头的字段,或者换句话说在curent包之外可见(在这种情况下在json
包中)。
以下是引用此规范的部分:http://golang.org/ref/spec#Exported_identifiers
尽管如此,你仍然可以使用所谓的"标记"来解组不以大写字母开头的json字段。使用json
包,这是要使用的语法:
type Sample struct {
Name string `json:"name"`
Age int `json:"age"`
}
有关详细信息,请参阅documentation。
答案 1 :(得分:4)
json包只有stringfiy字段以大写字母开头。 见http://golang.org/pkg/encoding/json/
您需要像这样定义结构:
type Sample struct{
Name string `json:"name"`
Age int `json:"age"`
}