Go 함수 생성 방법

김민진·2022년 4월 10일
0

go

목록 보기
4/6

Go In Action을 보다 보니까 함수 생성방법이 궁금해져서...
작성해보았다.

36p 에서

func (m defaultMatcher) Search(feed *Feed,searchTerm String) ([]*Result,error){
	return nil,nil
}

을 보았다.

내가 알고 있는 함수와는 조금 다른 내용이였다..

기본적으로 Go의 함수 생성 방법은

func 키워드를 이용해 함수임을 선언하고

func 함수 이름(변수 이름 변수 타입,변수 이름 변수 타입 ~) ( 리턴타입,~)

로 구분되는걸 확인할 수 있다.

예시로 보자면

func println(text string) (string){
return text
}
func calc (num1 int,num2 int) (int,string){
return num1+num2 , "calc"

......식으로 정의가 된다.

func (m defaultMatcher) Search

의 부분은 "Search 메서드는 defaultMatcher 타입에 대한 값 수신기를(value receiver)를 선언하고 있다."

메서드를 정의하는 함수 선언부에 값 수신기를 사용하면 해당 메서드는 지정된 수신기 타입에만 연결된다.

즉 Search메서드는 defaultMatcher타입의 값이나 포인터에 대해서만 호출할 수 있다는 의미다.

메서드 호출의 예제


//defaultMatcher 타입의 수신기를 이용해 메서드를 선언한다.
func (m defaultMatcher) Search(feed *Feed,searchTerm string)

//defaultMatcher 타입의 포인터를 선언한다.
dm:=new(defaultMatcher) 

//메서드를 호출하면 컴파일러가 알아서 dm 포인터에 대한 역참조를 수행한다.
dm.Search(feed,"test")

//defaultMatcher 타입의 포인터 수신기를 이용해 메서드를 선언한다.
func (m *defaultMatcher) Search(feed *Feed,searchTerm string)

//defaultMatcher 타입의 값을 선언한다
var dm defaultMatcher

//메서드를 호출하면 컴파일러가 알아서 dm 값에 대한 참조 를 수행한다.
dm.Search(feed,"test")

대부분의 메서드는 그 실행 과정에서 값의 상태를 조작해야 하는 경우가 많으므로 메서드를 선언할 때 포인터 수신기를 이용해 선언하는 것이 권장돈다.

보고 있는 책에서는 라고 한다.

어쨋건 결과적으로 보자면..

func (m defaultMatcher) Search(feed *Feed,searchTerm String) ([]*Result,error)

m defaultMatcher로 지정된 타입을 매개변수로 받는것?
defaultMatcher라는 타입에서 Search라는 함수를 선언할 수 있는것 같다.

m.Search() 

처럼 사용할 수 있어 보인다... 일단 얕게 알아보고... 추후에 깊게 알아보기로 하자

profile
dart,c#,java 개발자! 잡다하게 해서 문제될게 없다!

0개의 댓글