ホームページ  >  記事  >  バックエンド開発  >  Go で異なる型の値を比較するにはどうすればよいですか?

Go で異なる型の値を比較するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-04 01:34:03740ブラウズ

How Can I Compare Values of Different Types in Go?

比較可能なインターフェイスとは何ですか?

Go には、明示的な比較可能なインターフェイスはありません。異なる型の値を比較するには、Less 関数を使用できます。

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)
}

以上がGo で異なる型の値を比較するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。