Git bir yapısını parçalara ayırmaya çalışıyorum. isimsiz tanımlayan Bar
işlev 3 yöntem tanımları (Len
, Swap
ve Less
) hareket ettirmek için herhangi bir şekilde varGolang'daki "sort" Arabirimini Kapsülleme
type byName []*Foo // struct Foo is defined in another package
func (a byName) Len() int { return len(a) }
func (a byName) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
func (a byName) Less(i, j int) bool { return a[i].Name < a[j].Name }
func Bar() {
var foos []*Foo // Populated by a call to an outside function
sort.Sort(byName(foos))
...
}
: I paketin üst düzeyde 3 yöntem tanımlayarak sort.Interface
uygulayabilir Go yöntemi?
// Something like this
func Bar() {
...
Len := func (a byName)() int { return len(a) }
}
En üst düzeyde tanımlanan 3 yönteme bu paketin dışından erişilebilir mi? Tahmin etmiyorum, çünkü byName
tipi yereldir.
'Len' tam adı,' packagename.byName.Len' dir. Söylediğiniz gibi, 'byName' ihraç edilemez olduğundan, 'Len' harici bir pakete de görünmez. –