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 중국어 웹사이트의 기타 관련 기사를 참조하세요!