내장 된 스트루트
구조물을 포함시킬 수 있습니다. 마치 함유 구조물의 일부인 것처럼. 이것은 유형간에 상속을 생성하는 데 사용할 수있는 강력한 기능입니다.
gotcha
내장 구조물의 메소드 세트는 그렇지 않습니다. 함유 구조물로 자동 홍보. 방법을 홍보하려면 내장 된 구조물은 익명이어야합니다.
메소드 프로모션
메소드 프로모션은 익명 임베디드 구조물의 메소드에 액세스 할 수있는 언어 기능입니다. 그것들은 함유 구조물의 방법이었다. 이것은 다음과 같은 규칙에 따라 달성됩니다.
임베딩없이 대체 접근 방식은 포인터 수신기를 사용하는 것입니다. 수신기 기능에 대한 포인터를 전달하면 기본 구조물의 필드와 메소드에 포함시킬 수 없습니다. 포인터 수신기 사용 :
type Props map[string]interface{}
func (p Props) GetString(key string) string {
return p[key].(string)
}
type Node struct {
Props
}
func main() {
node := Node{"test": "foo"}
fmt.Println(node.GetString("test")) // Output: foo
}
이 예에서는 GetString 메소드에 대한 포인터 수신기를 사용합니다. 이를 통해 우리는 그것을 포함시키지 않고도 기본 소품 구조의 필드와 방법에 액세스 할 수 있습니다.
결론
내장 된 스트러크는 상속을위한 강력한 도구입니다. 항상 최선의 선택은 아닙니다. 방법 홍보가 필요하거나 필요하지 않은 경우 포인터 수신기를 사용하면보다 유연하고 성능이 뛰어난 대안을 제공 할 수 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3