본문 바로가기

IT/GO

GO 언어 스터디 - 메서드

728x90

메서드는 구조체에 속한 함수입니다.

일반 함수와는 다르게 '리비서'라는 것으로 구조체를 정의하여 사용하고 호출할 수 있습니다.

이는 GO에는 클래스라는 개념이 없어서 다른 언어와는 다른 특징입니다.

다른 부분은 함수와 동일하게 사용하면 됩니다.

// 메서드 정의
func (리시버) 메서드명(매개변수 매개변수타입) 반환타입 {
  실행 코드
  return 반환값
}

-------
type Calulator struct {
  X int
}

func (c Calculator) add(y int) int {
  return c.X + y
}

func main() {
  calc := Calculator{10} // 구조체에 값을 넣어줍니다.
  val := calc.add(15) // 메서드의 함수에 값을 넣어줍니다.
  fmt.Println(val)
}

-------
// 실행 결과
$ go run ./main.go
25

 

리시버를 포인터로 지정

구조체를 포인터 타입으로 지정하면 구조체 속성의 값을 변경할 수 있습니다.

type Calulator struct {
  X int
}

// 리비서를 포인터로 지정
func (c *Calculator) add(y int) {
  c.X += y
}

func main() {
  calc := Calculator{10}
  calc.add(20)
  fmt.Println(calc.X)
}

-------
// 실행 결과
$ go run ./main.go
30

 

728x90