我正在使用这个库来访问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)
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,只有"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)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,只会打印出名称:
output : &{{"Name":"xx"} 0 -1}
Run Code Online (Sandbox Code Playgroud)
为什么是这样?如果我想要一个小写的字段并且在数据库中,那可能吗?
jul*_*enc 48
这是因为只导出以大写字母开头的字段,或者换句话说,在curent包之外(json在这种情况下在包中)可见.
以下是参考此规范的部分:http://golang.org/ref/spec#Exported_identifiers
尽管如此,你仍然可以使用所谓的"标签"来解组不以大写字母开头的json字段.使用该json包,这是使用的语法:
type Sample struct {
Name string `json:"name"`
Age int `json:"age"`
}
Run Code Online (Sandbox Code Playgroud)
json包仅stringfiy字段以大写字母开头。参见http://golang.org/pkg/encoding/json/
您需要这样定义结构:
type Sample struct{
Name string `json:"name"`
Age int `json:"age"`
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12788 次 |
| 最近记录: |