max{max=v}elseifv"/> max{max=v}elseifv">

ホームページ  >  記事  >  バックエンド開発  >  無効な操作: v > max (型パラメータ T と > は比較できません)

無効な操作: v > max (型パラメータ T と > は比較できません)

WBOY
WBOY転載
2024-02-14 19:54:09598ブラウズ

无效操作:v > max (型パラメータ T と > は比較できません)

php エディタ Apple が一般的なエラー メッセージを分析するためにここにいます: 「無効な操作: v > max (型パラメータ T >)" とは比較できません。PHP 言語でプログラミングするとき、特に型パラメーターを比較するときに、このエラーが発生することがあります。この記事では、読者がよりよく理解できるように、このエラーの原因と正しく処理する方法について詳しく説明します。この問題を解決します。比較できない 2 つの型を比較す​​ると、無効な操作エラーが発生します。この問題を解決するには、比較する型が比較できることを確認することが重要です。以下では、具体的な解決策を段階的に紹介します。

質問内容

package main

import (
    "fmt"
)

func findMinMax[T comparable](arr []T) (min, max T) {
    for _, v := range arr {
        if v > max {
            max = v
        } else if v < min {
            min = v
        }
    }
    return min, max
}

func main() {
    arr := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}
    fmt.Println(findMinMax(arr))
}

findminmax 関数に関して発生している問題の解決を喜んでお手伝いさせていただきます。 v > max または v

関数 findminmax が正しく動作することを期待しています。

解決策

t 型パラメータで comarable 制約を使用しました。 比較可能なは、比較可能なを意味します。したがって、この型の値に対して == 演算子を使用できます。これは、0f8de288a3430cc7515f1332d3a9f2db 演算子を使用するために必要な、順序付き であることを意味するものではありません。

順序付けされた制約は、constraints パッケージの golang.org/x/exp/ で定義されています。constraints.owned を参照してください。

コードを使用してコンパイルします:

リーリー

遊び場に行ってで試してみましょう。

ゼロ値

min および max から開始し、渡されたスライス内のすべての値がゼロ値より大きいか小さい場合、 であるため、間違った結果が得られます。 min または max はゼロのままになります。

簡単な修正は、渡されたスライスが空でない場合、

minmax を最初の値で初期化することです。 リーリー これは出力されます (

go playground

で試してください): リーリー 浮動小数点型を使用する場合は、他の浮動小数点数との順序が指定されていないため、

nan

値を明示的に処理する必要があることに注意してください。

以上が無効な操作: v > max (型パラメータ T と > は比較できません)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。