Golang으로 개발하면서 구조체의 멤버 변수를 만들 때 아무 생각 없이 소문자로 만들었다가 반나절 시간을 허비하고 말았다...
Private vs Public members
만일 내가 작성한 구조체가 Exported 될 일이(외부에서 접근) 있는 멤버 변수가 있다면 이를 소문자로 작성하면 안된다. 왜냐하면 소문자로 만들 경우 private member variable이 되기 때문에 접근이 불가능해진다. 따라서! 외부에서 쓰일 멤버 변수는 가장 앞 글자를 대문자로 작성하자!!!
The rule is simple, if an identifier is capitalized it will be exported. This manifests itself in golang when converting a struct to JSON.
type Apple struct {
color string
weight int
}
a := json.Marshal(Apple{"green", 10})
fmt.Println(a)
위와 같이 작성한 경우 json으로 export를 했을 때 출력 결과는 {} 만 나오게 된다... 멤버 변수 color, weight이 private member이기 때문에 접근이 불가능하기 때문이다.
type Apple struct {
Color string
Weight int
}
따라서 만일 두 멤버 변수를 export 시키고 싶을 때는 변수의 첫 글자를 대문자로 만들어주면 public member variable이 되기 때문에 출력이 가능하다.
'Programming > Go' 카테고리의 다른 글
[Go lang] Go - 2차원 배열 만들기 예제 (0) | 2020.01.20 |
---|