[go] 구조체(struct)를 선언하는 방법

구조체(struct)는 변수를 그룹화하여 새로운 사용자 정의 데이터 타입을 만들 수 있는 Go 언어의 기능입니다. 구조체는 필드(field)라고 불리는 멤버 변수들의 집합으로 이루어져 있습니다. 이러한 구조체를 선언하는 방법에 대해 알아보겠습니다.

구조체 선언하기

구조체를 선언하기 위해 type 키워드와 함께 새로운 타입의 이름과 중괄호로 둘러싸인 필드 정의를 사용합니다. 각 필드는 이름과 타입으로 구성되어 있습니다.

type Person struct {
    name string
    age  int
}

위 예시에서는 Person이라는 구조체를 선언하였습니다. 이 구조체에는 nameage라는 두 개의 필드가 존재합니다. name 필드는 문자열 타입인 string을, age 필드는 정수 타입인 int를 가지고 있습니다.

구조체 인스턴스 생성하기

구조체를 선언한 후에는 해당 구조체의 인스턴스를 생성할 수 있습니다. 구조체 인스턴스는 var 키워드를 사용하여 선언하며, 필드에 값을 할당하는 방식으로 초기화할 수 있습니다.

var person1 Person
person1.name = "John Doe"
person1.age = 30

위 예시에서는 Person 타입의 person1이라는 구조체 인스턴스를 생성하고, name 필드에 “John Doe”라는 값을 할당하고, age 필드에 30이라는 값을 할당하였습니다.

구조체 인스턴스를 생성할 때, 필드의 초기 값을 함께 지정할 수도 있습니다.

person2 := Person{
    name: "Jane Smith",
    age:  25,
}

위 예시에서는 Person 타입의 person2라는 구조체 인스턴스를 생성하고, name 필드에 “Jane Smith”라는 값을, age 필드에 25라는 값을 할당하였습니다.

참조로 구조체 전달하기

구조체는 값 타입이기 때문에 함수에 인자로 전달할 때 필드의 값을 복사하여 전달합니다. 따라서 구조체가 크거나 수정할 필요가 없는 경우에는 구조체의 포인터를 사용하여 인자를 전달하는 것이 성능상 유리할 수 있습니다.

func printPerson(p *Person) {
    fmt.Println("Name:", p.name)
    fmt.Println("Age:", p.age)
}

printPerson(&person1)

위 예시에서는 printPerson 함수를 선언하고, 해당 함수는 Person 구조체 포인터를 인자로 받습니다. 구조체 인스턴스 person1의 주소를 인자로 넘겨주어 함수 내에서 필드 값을 접근하고 출력합니다.

이제 구조체를 선언하고 인스턴스를 생성하는 방법에 대해 알게 되었습니다. 구조체는 프로그램에서 데이터를 보다 구조적으로 관리하고 다루기 위한 강력한 도구입니다. Go 언어에서 구조체를 적절히 활용하여 코드를 작성해 보세요!

참고 자료