Where does TestObject implement the Comparable interface, esp. the Compare method? I don't see such in that rep. The implemented TestObject.Compare method has different signature: it requests a TestObject, not a Comparable interface, as your spec! This is only the first error.
The second is that a slice of objects cannot be converted to a slice of interface - only by manually copying: ``` diff --git a/sort_test.go b/sort_test.go index 0874721..c89b3b3 100644 --- a/sort_test.go +++ b/sort_test.go @@ -13,10 +13,10 @@ type TestObject string type TestList []TestObject -func (this TestObject) Compare(that TestObject) int { +func (this TestObject) Compare(that Comparable) int { var bi, bj byte - var x, y, z int = 0, len(this), len(that) + var x, y, z int = 0, len(this), len(that.(TestObject)) var d, c int = 0, 0 if y == z { @@ -34,7 +34,7 @@ func (this TestObject) Compare(that TestObject) int { for ; x < c; x++ { bi = this[x] - bj = that[x] + bj = (that.(TestObject))[x] if bi != bj { if bi < bj { @@ -58,7 +58,11 @@ func (this TestList) Print() { func TestSort(t *testing.T) { var vector TestList = TestList{TestObject("20231219192613"), TestObject("20231221074246"), TestObject("20240102214104"), TestObject("20231222063428"), TestObject("20240104112200"), TestObject("20231217190339"), TestObject("20231213155157"), TestObject("20231219065525"), TestObject("20231231120412"), TestObject("20231221152849"), TestObject("20240102073948"), TestObject("20240101083455")} - Sort(vector) + objs := make([]Comparable, len(vector)) + for i := range vector { + objs[i] = vector[i] + } + Sort(objs) vector.Print() } ``` John Pritchard a következőt írta (2024. január 6., szombat, 8:53:01 UTC+1): > Hi, > > Here's a case of "type dissonance" I don't understand. Why should it be? > > https://github.com/syntelos/go-sort > > > An interface type not passing through a static public package function > that employs the interface. > > type Comparable interface { > > > Compare(Comparable) int > > } > > func Sort(array []Comparable) ([]Comparable) > > > With go-1.20.12: > > $ go test > # github.com/syntelos/go-sort [github.com/syntelos/go-sort.test] > ./sort_test.go:61:7: cannot use vector (variable of type TestList) as > []Comparable value in argument to Sort > FAIL github.com/syntelos/go-sort [build failed] > > > Any comments? > > Best, > > John > > > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/ba7239c1-cb52-4f86-9e56-da6ffa721fa5n%40googlegroups.com.