더북(TheBook)

4.3.1 생성과 초기화

구조체는 다음과 같은 방식으로 생성한다.

타입{초깃값}  // 1. 구조체 리터럴로 생성
&타입{초깃값} // 2. 구조체 리터럴의 포인터 생성
new(타입)     // 3. 구조체 포인터 생성

구조체 리터럴로 생성

필드와 값을 나열해서 구조체를 생성하는 방법을 알아보자. {필드명1: 값1, 필드명2: 값2} 형태로 원하는 필드에 초깃값을 할당한다. 초깃값을 할당하지 않은 필드는 제로값으로 초기화된다. 필드명을 작성하지 않고도 초깃값을 할당할 수 있다. 필드가 정의된 순서대로 할당할 초깃값을 나열하면 된다.

shirt := Item{name: "Men's Slim-Fit Shirt", price: 25000, quantity: 3}
shoes := Item{name: "Sports Shoes", price: 30000}
dress := Item{name: "Stripe Shift Dress", quantity: 2}
phone := Item{"Amazon Fire Phone, 32GB", 21900, 1}
 
fmt.Println(shirt)    // {Men's Slim-Fit Shirt 25000 3}
fmt.Println(shoes)    // {Sports Shoes 30000 0}
fmt.Println(dress)    // {Stripe Shift Dress 0 2}
fmt.Println(phone)    // {Amazon Fire Phone, 32GB 21900 1}

구조체 리터럴의 포인터 생성

구조체 리터럴 앞에 주소 연산자(&)를 붙이면 생성된 구조체의 메모리 주소를 반환한다.

p := &Item{name: “Men’s Slim-Fit Shirt”, price: 25000, quantity: 3}
 
fmt.Println(p)         // &{Men’s Slim-Fit Shirt 25000 3}
fmt.Println(p.Cost())  // 75000

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.