- 서로 다른 타입의 속성을 하나로 묶어 관리
- 멤버변수명: 타입 속성의 형식
- 구조체를 하나로 이용할 수도, 개별로 이용할 수도 있다.
- 구조체 합성도 가능하다.
package main
import (
"fmt"
)
func main() {
p := person{
firstName: "gildong",
lastName: "Go",
age: 43,
}
fmt.Println("구조체 전체를 출력:", p)
fmt.Println("구조체 멤버 하나만 출력:", p.firstName)
p.age = 40
fmt.Println("구조체 멤버 하나만 수정:", p)
}
type person struct {
firstName string
lastName string
age int
}
// 결과
//
// 구조체 전체를 출력: {gildong Go 43}
// 구조체 멤버 하나만 출력: gildong
// 구조체 멤버 하나만 수정: {gildong Go 40}
- 구조체 합성
- 함수 이름 앞에 리시버로 구조체를 정의할 수 있다.
- 그러면 구조체 변수로 할당한 함수 호출 가능
package main
import (
"fmt"
)
func main() {
p := person{
firstName: "gildong",
lastName: "Go",
age: 43,
}
p.whoami()
s := student{
person: person{"Dooly", "Na", 32},
studentID: 99,
}
s.whoami()
}
type person struct {
firstName string
lastName string
age int
}
func (p person) whoami() {
fmt.Println(p, "I am a person.")
}
// 구조체 합성
type student struct {
person
studentID int
}
func (s student) whoami() {
fmt.Println(s, "I am a student.")
}
// 결과
//
// {gildong Go 43} I am a person.
// {{Dooly Na 32} 99} I am a student.
댓글 영역