Go 프로그래밍 - 메서드

beno·2021년 7월 17일
0

golang

목록 보기
7/8

메서드 = 특정 타입에 속해 있어 해당 타입의 인스턴스에서 실행 가능한 함수

1. 메서드 선언하기

// r Rabbit: 리시버 (해당 메서드를 선언할 타입)
// info(): 함수명 및 매개변수 정의
// int: 리턴타입 명시
func (r Rabbit) info() int {
	return r.width * r.height
}

예시

package main

import "fmt"

type Person struct {
  Name string;
  Age int;
}

func (p Person) introduce() {
  fmt.Printf("제 이름은 %s이고 나이는 %d살 입니다!", p.Name, p.Age)
}

func main() {
  person := Person{
    "제임스",
    31,
  }
  person.introduce()
}
  • 함수와의 차이
    • 리시버 유무에 따라 다름
    • 리시버가 없는 경우, 특정 타입에 종속되지 않는 함수
    • 리시버가 있는 경우, 메서드이다.

2. 포인터 메서드 vs 값 타입 메서드

package main

import (
	"fmt"
)

type Person struct {
	Name string
}

// 값 타입 메서드. 실제 결과에 영향을 미치지 않음.
func (p Person) ChangeNameValue(name string){
	p.Name = name
}

// 포인터 타입 메서드
func (p *Person) ChangeNamePointer(name string){
	p.Name = name
}

func main() {
	var p = Person{"철수"}

	p.ChangeNameValue("영희")
	fmt.Println(p.Name)
    // > "철수"

	p.ChangeNamePointer("영희")
	fmt.Println(p.Name)

}
profile
마음은 여기에. 시선은 저 멀리.

0개의 댓글

관련 채용 정보