구조 분야의 자본
이 라이브러리를 사용하여 CouchDB(구체적으로는 클라우드) "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}
왜 이러한가?그리고 소문자로 된 필드를 데이터베이스 안에 넣고 싶은데 가능한가요?
이는 대문자로 시작하는 필드만 내보내거나 다른 말로 하면 curent 패키지 외부(및json패키지)를 참조해 주세요.
다음은 이에 관한 사양의 일부입니다.http://golang.org/ref/spec#Exported_identifiers
그러나 "태그"라고 하는 것을 사용하여 대문자로 시작하지 않는 json 필드를 마샬링 해제할 수 있습니다.를 사용하여json사용하는 구문은 다음과 같습니다.
type Sample struct {
Name string `json:"name"`
Age int `json:"age"`
}
상세한 것에 대하여는, 메뉴얼을 참조해 주세요.
json package only stringfiy 필드는 대문자로 시작합니다.http://golang.org/pkg/encoding/json/ 를 참조해 주세요.
구조값은 JSON 개체로 인코딩됩니다.아래 중 하나의 이유로 필드를 생략하지 않는 한 내보낸 각 구조 필드는 필드 이름을 개체 키로 사용하여 개체의 멤버가 됩니다.
다음과 같이 구조를 정의해야 합니다.
type Sample struct{
Name string `json:"name"`
Age int `json:"age"`
}
json.Marshal 메서드 structure - in field - 대문자로 시작하는 필드만 받아들입니다.
json 패키지는 내보낸 구조 유형 필드(대문자로 시작하는 필드)에만 액세스합니다.따라서 JSON 출력에는 구조물의 내보낸 필드만 표시됩니다.
type Sample struct {
Name string
Age int
}
언급URL : https://stackoverflow.com/questions/24837432/capitals-in-struct-fields
'programing' 카테고리의 다른 글
| Angular가 있는 개체 배열에서 해당 속성으로 개체 찾기JS 방식 (0) | 2023.03.25 |
|---|---|
| php.ini에서 DOM 확장자를 활성화하려면 어떻게 해야 합니까? (0) | 2023.03.25 |
| 모든 패키지에서 테이블 및/또는 열을 검색하기 위한 쿼리 (0) | 2023.03.25 |
| 경고:텍스트 내용이 일치하지 않습니다.서버: "I'm out" 클라이언트: "I'm in" div (0) | 2023.03.25 |
| 현재 게시물의 WordPress Post ID 가져오기 (0) | 2023.03.25 |