Go에서는 인터페이스를 사용하여 사용자 정의 유형을 정의할 수 있습니다. 그러나 특정 기능을 간단한 작업으로 구현해야 하는 상황에서 인터페이스의 익명 구현이 가능한지에 대한 의문이 제기됩니다.
의사 코드 제공된 제안에서는 다음과 유사한 익명 구현을 만들 것을 제안합니다.
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 { if cop.binary != nil { return cop.binary(a, b) } return 0 } func (cop CustomOp) Ternary(a, b, c int) int { if cop.ternary != nil { return cop.ternary(a, b, c) } return 0 }
사용 예:
RandomNumOp(CustomOp{ binary: func(a, b int) int { return a + b }, })
구현에 기능이 필요하지 않은 경우 메서드에서는 익명 구조체 리터럴을 사용할 수 있습니다.
var op NumOp = struct{ NumOp }{}
위 내용은 Go에서 익명 인터페이스 구현이 가능합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!