> 백엔드 개발 > Golang > Go 언어의 인터페이스 사용

Go 언어의 인터페이스 사용

풀어 주다: 2019-11-29 15:24:23
앞으로
2908명이 탐색했습니다.

Go 언어의 인터페이스 사용

Go에서 인터페이스의 의미는 실제로 다른 언어의 인터페이스와 동일합니다. 인터페이스는 일종의 사양이나 규칙으로 이해됩니다. 유형이 인터페이스를 "구현"합니까? 이는 이 유형이 인터페이스에 정의된 모든 메소드를 구현하는지 여부에 따라 다릅니다. (추천: go 언어 튜토리얼)

1. 인터페이스의 정의와 사용.

예를 들어,

type I interface{
    Get() int
    Put(int)
 
}
로그인 후 복사

이 단락은 Get과 Put이라는 두 가지 함수를 포함하는 인터페이스를 정의합니다

좋아, 내 인터페이스 중 하나가 이 인터페이스를 구현합니다.

type S struct {val int}
func (this *S) Get int {
    return this.val
}
func (this *S)Put(v int) {
    this.val = v
 
}
로그인 후 복사

이 구조 S는 인터페이스 I를 구현합니다.

2 . 빈 인터페이스

빈 인터페이스 인터페이스{}는 실제로 제네릭의 개념과 매우 유사합니다. 모든 유형은 빈 인터페이스를 구현합니다.

다음은 예입니다.

함수는 다음과 같은 함수를 구현합니다.

모든 개체를 매개 변수로 사용합니다. 이 개체가 인터페이스 I을 구현하는 경우 인터페이스 I의 Get 메서드를 호출합니다.

다양한 언어에는 그런 논리 :

function g(obj){
    if (obj is I) {
        return (I)obj.Get()
    }
 
}
로그인 후 복사

Go에서 구현되는 방법은 다음과 같습니다.

func g(any interface{}) int {
    return any.(I).Get()
 
}
로그인 후 복사

어떤 것이 있나요?(I) 여기서 매우 의미가 있나요? "I 인터페이스를 구현하는 모든 개체"

3. Go에서 인터페이스를 작성하는 방법:

몇 가지 인터페이스 예를 살펴보겠습니다.

func SomeFunction(w interface{Write(string)}){
    w.Write("pizza")
 
}
로그인 후 복사

이 예에서는 인터페이스가 매개변수에 직접 정의됩니다.

func weirdFunc( i int ) interface{} {
  if i ==  0 {
    return "zero"
  }
  return i;
}
로그인 후 복사

이번 예시에서는 string이나 int 반환이 가능하기 때문에 반환값을 인터페이스로 설정했는데, 이는 Go 패키지에서 많이 볼 수 있습니다.

위 내용은 Go 언어의 인터페이스 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:cnblogs.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿