Go in Action - 2

김민진·2022년 4월 10일
0

go

목록 보기
5/6

인터페이스 메서드 호출에 대한 제약

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

//인터페이스 타입 값을 통해 메서드를 호출한다.
var dm defaultMatcher
var matcher Matcher = dm //인터페이스 타입의 값을 대입한다.
matcher.Search(feed,"test") //값에 의한 인터페이스 메서드 호출

>go build
cannot use dm (type defaultMatcher) as type Matcher in assignment

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



var dm defaultMatcher
var matcher Matcher = &dm //인터페이스 타입의 포인터를 대입한다.
matcher.Search(feed,"test") //포인터에 의한 인터페이스 메서드 호출

>go build
Build Succcessful

defaultMatcher 타입의 값과 포인터는 이제 Matcher 타입의 값에 대입하거나 Matcher 타입의 값을 매개변수로 정의하는 함수에 전달할 수 있게 된다.

모든 코드 파일은 패키지에 속해야 하며 패키지 이름은 코드 파일이 존재하는 폴더의 이름과 동일해야한다.
Go는 변수를 선언하고 초기화 하기 위한 여러 방법을 제공한다. 변수의 값이 명시적으로 초기화 되지 않은 경우에는 컴파일러가 해당 변수를 제로 값으로 초기화한다.
포인터는 함수와 고루틴 간에 데이터를 공유하기 위한 방법을 제공한다.
채널을 이용하여 고루틴을 실행함으로써 동시성과 동기화를 처리할 수 있다.
Go는 Go의 내장 데이터 구조체를 지원하기 위한 내장 함수를 제공한다.
표준 라이브러리는 강력한 기능을 수행하는 여러 패키지를 제공한다.
Go의 인터페이스를 이용하면 범용 코드와 프레임워크를 작성할 수 있다.

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

0개의 댓글