max{max=v}elseifv"/> max{max=v}elseifv">
php小編蘋果在這裡為大家解析一個常見的錯誤訊息:"無效操作:v > max(類型參數T 與> 不可比較)"。在使用PHP語言程式設計時,我們可能會遇到這種錯誤,特別是在比較類型參數時。本文將詳細解釋這個錯誤的原因以及如何正確處理,幫助讀者更好地理解和解決這個問題。無效操作錯誤是比較兩個不可比較的類型時出現的,解決這個問題的關鍵是確保比較的類型是可比較的。在下文中,我們將逐步介紹具體的解決方法。
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 d278ee6b3791a1d966b8ca27e4caeb46 運算子所必需的。
有序約束在 golang.org/x/exp/ 中定義constraints
包,請參考 ##constraints.ordered#。
import ( "fmt" "golang.org/x/exp/constraints" ) func findminmax[t constraints.ordered](arr []t) (min, max t) { for _, v := range arr { if v > max { max = v } else if v < min { min = v } } return min, max }在
go playground 上嘗試。
它給出了錯誤的結果,因為您從零值開始min 和
max ,並且如果傳遞的切片中的所有值都大於或小於零值,則
min 或
max 將保持零值。
min 和
max:
func findminmax[t constraints.ordered](arr []t) (min, max t) { if len(arr) > 0 { min, max = arr[0], arr[0] } for _, v := range arr { if v > max { max = v } else if v < min { min = v } } return min, max }這將輸出(在
go playground 上嘗試):
1 9請注意,如果您使用浮點類型,則必須明確處理
nan 值,因為未指定它們與其他浮點數的順序。
以上是無效操作:v > max(類型參數 T 與 > 不可比較)的詳細內容。更多資訊請關注PHP中文網其他相關文章!