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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/golang-nuts/ba7239c1-cb52-4f86-9e56-da6ffa721fa5n%40googlegroups.com.