Go에서 익명 인터페이스 구현이 가능한가요?
다음 인터페이스와 가상 라이브러리의 함수를 고려해 보세요.
type NumOp interface { Binary(int, int) int Ternary(int, int, int) int } func RandomNumOp(op NumOp) { // ... }
이 인터페이스를 구현하려면 유형을 정의할 수 있습니다. like:
type MyAdd struct {} func (MyAdd) Binary(a, b int) int {return a + b } func (MyAdd) Ternary(a, b, c int) int {return a + b + c }
기능적 구현 필요
그러나 일회용 시나리오를 위해 익명 함수를 사용하여 인터페이스를 구현해야 한다고 가정해 보겠습니다. 이렇게 하면 다음과 같이 작성할 수 있습니다.
RandomNumOp({ Binary: func(a,b int) int { return a+b}, Ternary: func(a,b,c int) int {return a+b+c}, })
구현 제한
안타깝게도 Go에서는 메서드 선언이 파일 수준에 있어야 합니다. 여러 메소드로 인터페이스를 구현하려면 다음 선언이 필요합니다.
실행 가능한 구현
작업 가능한 구현이 필요한 경우 더미 구현을 사용할 수 있습니다.
type DummyOp struct{} func (DummyOp) Binary(_, _ int) int { return 0 } func (DummyOp) Ternary(_, _, _ int) int { return 0 }
동적 부분 구현
일부 메서드를 동적으로 설정하려면 위임자 구조체를 고려하세요.
type CustomOp struct { binary func(int, int) int ternary func(int, int, int) int } func (cop CustomOp) Binary(a, b int) int { // ... } func (cop CustomOp) Ternary(a, b, c int) int { // ... }
비기능 구현
메서드를 호출할 필요가 없으면 다음을 사용할 수 있습니다. 익명 구조체 리터럴:
var op NumOp = struct{ NumOp }{}
위 내용은 Go에서 익명 인터페이스를 구현할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!