[go] 구조체(struct) 멤버 변수와 멤버 함수

구조체(struct)는 서로 다른 데이터 타입을 가지는 여러 변수를 하나의 논리적인 단위로 묶을 수 있게 해주는 데이터 구조입니다. 이 구조체는 C 언어에서 많이 사용되었으며, Go 언어에서도 사용할 수 있습니다. 구조체는 멤버 변수와 멤버 함수를 가질 수 있어서 데이터의 상태와 동작을 함께 처리할 수 있습니다.

멤버 변수(Member Variables)

구조체의 멤버 변수는 구조체 내에 선언된 변수로, 구조체의 상태를 나타냅니다. 멤버 변수는 다양한 데이터 타입을 가질 수 있으며, 필요한 만큼 많이 선언할 수 있습니다. 멤버 변수는 일반적으로 구조체 내에 직접 접근하여 값을 변경하거나 가져올 수 있습니다.

아래는 Go 언어에서 구조체 내에 멤버 변수를 선언하는 예시입니다.

package main

import "fmt"

type Person struct {
    Name   string
    Age    int
    Height float64
}

func main() {
    p := Person{ // 구조체 변수 선언 및 초기화
        Name:   "John",
        Age:    28,
        Height: 175.5,
    }
    
    fmt.Println(p.Name) // 멤버 변수에 접근하여 값을 출력
    fmt.Println(p.Age)
    fmt.Println(p.Height)
}

위의 예시에서는 Person 구조체를 선언하고, Name, Age, Height와 같은 멤버 변수를 가지도록 정의했습니다. main 함수에서는 Person 타입의 변수 p를 선언하고 초기화한 후, 멤버 변수에 접근하여 값을 출력하고 있습니다.

멤버 함수(Member Functions)

구조체의 멤버 함수는 구조체가 가지는 동작을 정의하는 함수입니다. 멤버 함수는 일반적으로 구조체의 멤버 변수에 접근하여 값을 변경하거나 가져오는 등의 작업을 수행합니다. 또한, 멤버 함수는 구조체에 특화된 기능을 제공할 수 있어서 구조체의 사용성을 증가시킵니다.

아래는 Go 언어에서 구조체 내에 멤버 함수를 추가하는 예시입니다.

package main

import "fmt"

type Rectangle struct {
    Width  float64
    Height float64
}

func (r Rectangle) Area() float64 { // 구조체에 멤버 함수 추가
    return r.Width * r.Height
}

func main() {
    rect := Rectangle{Width: 10, Height: 5}
    area := rect.Area() // 멤버 함수 호출하여 면적 계산
    
    fmt.Println(area)
}

위의 예시에서는 Rectangle 구조체를 선언하고, Area라는 멤버 함수를 추가했습니다. Area 멤버 함수는 Rectangle 구조체의 멤버 변수인 WidthHeight를 이용하여 면적을 계산한 후 반환합니다. main 함수에서는 Rectangle 타입의 변수 rect를 선언하고 초기화한 후, Area 멤버 함수를 호출하여 면적을 계산하고 출력하고 있습니다.

구조체의 멤버 변수와 멤버 함수는 구조체의 내부에서 상호작용하여 데이터의 상태와 동작을 처리하는데 사용됩니다. 이를 통해 코드의 가독성과 재사용성을 높일 수 있습니다.

결론

구조체(struct)는 Go 언어에서 다양한 데이터 타입을 묶어 하나의 논리적인 단위로 다룰 수 있게 해주는 데이터 구조입니다. 멤버 변수는 구조체의 상태를 나타내는 변수이며, 멤버 함수는 구조체의 동작을 정의하는 함수입니다. 멤버 변수와 멤버 함수를 함께 사용하여 코드의 가독성과 재사용성을 높일 수 있습니다.

더 자세한 내용은 Go 언어의 공식 문서를 참고할 수 있습니다.

이상으로 구조체의 멤버 변수와 멤버 함수에 대해 알아보았습니다. 감사합니다.