Go 구조체(struct)

Go 구조체(struct) 설명

구조체(struct)

Go 언어에서는 클래스(class) 대신 구조체(struct)를 사용한다.

구조체에는 멤버 변수만을 정의하고, 클래스 메소드에 상당하는 함수는 함수명 앞에 (this에 해당하는 변수 *구조체명) 을 붙여 정의한다.

package main

import "fmt"

type Person struct {
	name string
	age  int
}

func (p *Person) SetPerson(name string, age int) {
	p.name = name
	p.age = age
}

func (p *Person) GetPerson() (string, int) {
	return p.name, p.age
}

func main() {
	var p1 Person
	p1.SetPerson("devkuma", 23)
	name, age := p1.GetPerson()
	fmt.Printf("%s(%d)\n", name, age)
}

실행 결과:

devkuma(23)

구조체의 멤버 중, 대문자로 시작되는 것은 패키지 외부에서도 액세스가 가능하고, 소문자로 시작되는 것은 패키지 외부에서 액세스 불가능하게 된다.

type Person struct {
	Name   string // 외부에서 액세스 가능
	Age    int    // 외부에서 액세스 가능
	status int    // 외부에서 액세스 불가
}

구조체를 사용할 때는 아래와 같이 파라미터를 초기화할 수 있다.

a1 := Person{ "devkuma", 26 }               // 순서대로 초기화 
a2 := Person{ name: "devkuma", age: 32 }    // 이름으로 초기화