Go by Example: 구조체

Go의 structs는 필드들로 이루어진 타입을 갖는 컬렉션입니다. 레코드를 구성하기 위해 데이터들을 그룹핑 하는데 유용합니다.

package main
import "fmt"

person 구조체 타입은 nameage 필드를 갖습니다.

type person struct {
	name string
	age  int
}
func main() {

새로운 구조체를 생성합니다.

	fmt.Println(person{"Bob", 20})

필드명을 사용해 구조체를 초기화 할 수 있습니다.

	fmt.Println(person{name: "Alice", age: 30})

생략된 필드는 제로값을 갖게됩니다.

	fmt.Println(person{name: "Fred"})

앞에 &를 붙이면 구조체 포인터를 생성할 수 있습니다.

	fmt.Println(&person{name: "Ann", age: 40})

닷(.)을 사용해 구조체 필드에 접근합니다.

	s := person{name: "Sean", age: 50}
	fmt.Println(s.name)

구조체 포인터에서도 닷(.)을 사용할 수 있습니다. 이 때 포인터는 자동으로 역참조됩니다.

	sp := &s
	fmt.Println(sp.age)

구조체는 수정이 가능(mutable)합니다.

	sp.age = 51
	fmt.Println(sp.age)
}
$ go run structs.go
{Bob 20}
{Alice 30}
{Fred 0}
&{Ann 40}
Sean
50
51

다음 예제: 메서드.