[go] Go 언어에서 메소드 반환 값

Go 언어는 강력한 타입 시스템을 갖추고 있어 메소드를 선언하고 사용하는 것이 가능합니다. 메소드는 특정 타입에 속하는 함수로, 해당 타입의 변수에서 호출할 수 있습니다. 이러한 메소드는 반환 값이 있을 수도 있고 없을 수도 있습니다.

메소드의 반환 값

메소드의 반환 값은 메소드가 종료될 때 돌려주는 값입니다. Go 언어에서는 메소드의 반환 값이 한 개 이상일 수 있습니다. 여러 개의 값을 반환하려면 괄호 안에 반환할 타입들을 쉼표로 구분하여 나열하면 됩니다.

package main

import "fmt"

type Rectangle struct {
    width  float64
    height float64
}

func (r Rectangle) Area() (float64, float64) {
    return r.width * r.height, 2 * (r.width + r.height)
}

func main() {
    rect := Rectangle{10, 5}
    area, perimeter := rect.Area()
    fmt.Println("넓이:", area)
    fmt.Println("둘레:", perimeter)
}

위의 예시에서 Rectangle 구조체에는 Area() 메소드가 있습니다. 이 메소드는 float64 타입의 두 개의 값을 반환합니다. main 함수에서 rect.Area()를 호출하고 반환된 값을 areaperimeter 변수에 할당한 후 결과를 출력합니다.

반환 값을 무시하기

Go 언어에서는 메소드의 반환 값을 받을 필요가 없는 경우 해당 값을 무시할 수 있습니다. 이때는 밑줄(_)로 값을 받는 변수를 할당하면 됩니다.

package main

import "fmt"

type Circle struct {
    radius float64
}

func (c Circle) Area() float64 {
    return 3.14 * c.radius * c.radius
}

func main() {
    circle := Circle{5}
    _ = circle.Area()
    fmt.Println("원의 넓이를 계산했습니다.")
}

위의 예시에서 Area() 메소드는 float64 타입의 값을 반환합니다. 하지만 이 값을 main 함수에서는 필요로 하지 않으므로 반환 값을 무시합니다. 이런 방식으로 반환 값을 처리하지 않고도 원하는 동작을 수행할 수 있습니다.

결론

Go 언어에서 메소드는 반환 값을 가질 수 있습니다. 메소드의 반환 값은 메소드를 호출한 곳에 돌려주는 값이며, 한 개 이상의 값을 반환할 수 있습니다. 또한 반환 값을 무시하여 필요하지 않은 값을 처리할 수도 있습니다. Go 언어의 타입 시스템과 메소드 기능을 효과적으로 활용하여 프로그래밍을 할 수 있습니다.


참고: