比較可能なインターフェイスは何と呼ばれますか?
Go には、汎用の比較演算子 (<) を提供する事前定義されたインターフェイスはありません。代わりに、型を比較する独自の Less 関数を定義できます。 Less 関数は、同じ型の 2 つの引数を受け取り、最初の引数が 2 番目の引数より小さいかどうかを示すブール値を返します。
整数と文字列を比較できる Less 関数の例を次に示します。
func Less(a, b interface{}) bool { switch a.(type) { case int: if ai, ok := a.(int); ok { if bi, ok := b.(int); ok { return ai < bi } } case string: if ai, ok := a.(string); ok { if bi, ok := b.(string); ok { return ai < bi } } // ... default: panic("Unknown") } return false }
Less 関数を使用して、並べ替えられたリンク リストに要素を挿入できます:
func Insert(val interface{}, l *list.List) *list.Element { e := l.Front() if e == nil { return l.PushFront(val) } for ; e != nil; e = e.Next() { if Less(val, e.Value) { return l.InsertBefore(val, e) } } return l.PushBack(val) }
これInsert 関数は、Less 関数に基づいてソートされた順序でリンクされたリストを維持します。
以上がGo で汎用比較演算子を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。