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

Go 언어의 인터페이스 사용

尚
앞으로
2019-11-29 15:24:232871검색

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으로 문의하시기 바랍니다. 삭제