저작권 안내
- 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
- 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.
구조체 사용하기
이재홍 http://www.pyrasis.com 2014.12.17 ~ 2015.02.07
구조체 생성자 패턴 활용하기
new 함수로 구조체의 메모리를 할당하는 동시에 값을 초기화하는 방법은 없습니다. 하지만 다음과 같은 패턴을 사용하여 다른 언어의 생성자(Constructor)를 흉내낼 수 있습니다.
func NewRectangle(width, height int) *Rectangle {
return &Rectangle{width, height} // 구조체 인스턴스를 생성한 뒤 포인터를 리턴
}
func main() {
rect := NewRectangle(20, 10)
fmt.Println(rect) // &{20 10}
}
실행 결과
&{20 10}
Go 언어에서는 지역 변수 형태로 생성된 구조체나, 구조체의 포인터를 리턴할 수 있습니다. 예제에서는 함수 안에서 중괄호 블럭으로 구조체의 값을 초기화한 뒤 포인터를 리턴하는 방식으로 생성자 역할을 수행합니다.
코드를 좀 더 줄이면 다음과 같은 방식도 사실상 같습니다.
rect := &Rectangle{20, 10} // 구조체를 초기화한 뒤 메모리 주소를 대입
fmt.Println(rect) // &{20 10}
실행 결과
&{20 10}
Go 언어에서 지역 변수를 계속 참조하고 있다면 스코프({ }로 묶인 영역)를 벗어나더라도 변수가 해제되지 않습니다.
저작권 안내
이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.- 블로그, 게시판 등에 퍼가는 것을 금지합니다.
- 비공개 포스트에 퍼가는 것을 금지합니다.
- 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
- 링크 및 SNS 공유는 허용합니다.