Programming/Go

[개발팁] Golang을 사용해서 개발한다면 대소문자에 유의하자...

족제비다아 2020. 8. 11. 14:41

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