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