国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Go 1.21新增的 cmp 包詳解

這篇具有很好參考價(jià)值的文章主要介紹了Go 1.21新增的 cmp 包詳解。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Go 1.21新增的 cmp 包提供了與比較有序值相關(guān)的類型和函數(shù),前幾篇文章講解的 slices 包中的函數(shù)有大量使用到?cmp 包中的函數(shù)和類型。

cmp.Compare 函數(shù)

定義如下:

func Compare[T Ordered](x, y T) int

返回值有以下幾種情況:

  1. 如果 x 小于 y,返回-1
  2. 如果 x 等于 y,返回 0
  3. 如果 x 大于 y,返回 1

對(duì)于浮點(diǎn)類型,NaN 被認(rèn)為小于任何非 NaN 的值, NaN 被認(rèn)為等于 NaN, -0.0 被認(rèn)為等于 0.0。簡(jiǎn)單示例如下:

package main

import (
	"cmp"
	"fmt"
	"math"
)

func main() {
	fmt.Println(cmp.Compare(1, 2))                   // -1
	fmt.Println(cmp.Compare(1, 1))                   // 0
	fmt.Println(cmp.Compare(2, 1))                   // 1
	fmt.Println(cmp.Compare(1, math.NaN()))          // 1
	fmt.Println(cmp.Compare(-1, math.NaN()))         // 1
	fmt.Println(cmp.Compare(math.NaN(), math.NaN())) // 0
	fmt.Println(cmp.Compare(-0.0, 0.0))              // 0
}

cmp.Less 函數(shù)

定義如下:

func Less[T Ordered](x, y T) bool

判斷 x 是否小于 y。對(duì)于浮點(diǎn)類型,NaN 被認(rèn)為小于任何非 NaN 的值,并且 -0.0 不小于(等于) 0.0。

package main

import (
	"cmp"
	"fmt"
	"math"
)

func main() {
	fmt.Println(cmp.Less(1, 2))                   //true
	fmt.Println(cmp.Less(1, 1))                   // false
	fmt.Println(cmp.Less(2, 1))                   // false
	fmt.Println(cmp.Less(1, math.NaN()))          // false
	fmt.Println(cmp.Less(-1, math.NaN()))         // false
	fmt.Println(cmp.Less(math.NaN(), math.NaN())) // false
	fmt.Println(cmp.Less(math.NaN(), -1.0))       // true
	fmt.Println(cmp.Less(-0.0, 0.0))              // false
}

cmp.Ordered 接口

定義如下:

type Ordered interface {
	~int | ~int8 | ~int16 | ~int32 | ~int64 |
		~uint | ~uint8 | ~uint16 | ~uint32 | ~uint64 | ~uintptr |
		~float32 | ~float64 |
		~string
}

Ordered 是對(duì)有序類型的約束,包含任何支持操作符 <、<=、>= 和 > 的類型。如果 Go 未來的版本添加了新的有序類型,則將修改此接口以將新的有序類型包含進(jìn)去。

需要注意的是,浮點(diǎn)類型可能包含NaN(“非數(shù)字”)類型的值。在將 NaN 值與任何其它值(無論是否為 NaN)進(jìn)行比較時(shí),例如 == 或 < 之類的操作符結(jié)果都是 false。文章來源地址http://www.zghlxwxcb.cn/news/detail-666352.html

到了這里,關(guān)于Go 1.21新增的 cmp 包詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • slices in Go 1.21

    slices in Go 1.21

    Go 1.21中新增的 slices 包中提供了很多與切片相關(guān)的函數(shù),適用于任意類型的切片。 本文內(nèi)容來自官方文檔 函數(shù)簽名如下: BinarySearch 在已排序的切片中搜索 target 并返回找到 target 的位置,或者 target 在排序順序中出現(xiàn)的位置;它還返回一個(gè)布爾值,表示是否確實(shí)在切片中找到

    2024年02月08日
    瀏覽(34)
  • 使用go mod tidy命令出現(xiàn)go.mod file indicates go 1.21, but maximum supported version is 1.19,如何解決

    使用go mod tidy命令出現(xiàn)go.mod file indicates go 1.21, but maximum supported version is 1.19,如何解決

    使用git拉取代碼Golang代碼到本地后,利用VS Code打開項(xiàng)目后,看到go.mod報(bào)紅,現(xiàn)象如下圖所示:` 這個(gè)問題是當(dāng)前使用的go版本與git clone拉取下來的項(xiàng)目的go.mod所用的go版本不一致導(dǎo)致的: 在項(xiàng)目中打開一個(gè)terminal,查看當(dāng)前安裝的go版本是否與go.mod的第二行的聲明一致:如下圖

    2024年02月06日
    瀏覽(32)
  • 力扣日記1.21-【回溯算法篇】77. 組合

    力扣日記1.21-【回溯算法篇】77. 組合

    日期:2023.1.21 參考:代碼隨想錄、力扣 終于結(jié)束二叉樹了!聽說回溯篇也是個(gè)大頭,不知道這一篇得持續(xù)多久了…… 題目描述 難度:中等 給定兩個(gè)整數(shù) n 和 k,返回范圍 [1, n] 中所有可能的 k 個(gè)數(shù)的組合。 你可以按 任何順序 返回答案。 示例 1: 輸入:n = 4, k = 2 輸出:

    2024年01月22日
    瀏覽(22)
  • 一、Go基礎(chǔ)知識(shí)21、GOPROXY設(shè)置鏡像、go編碼規(guī)范

    在設(shè)置 Go 語言的代理時(shí),可以使用 GOPROXY 環(huán)境變量來指定代理服務(wù)器的地址。 Go 官方提供的中國國內(nèi)鏡像: https://goproxy.cn。 以下是如何設(shè)置 Goproxy 中國國內(nèi)鏡像的步驟: 在終端或命令提示符中執(zhí)行以下命令: 如果你使用的是 Windows 平臺(tái)的命令提示符,可以使用以下命令:

    2024年01月17日
    瀏覽(21)
  • 【Golang】Golang進(jìn)階系列教程--Go 語言切片是如何擴(kuò)容的?

    【Golang】Golang進(jìn)階系列教程--Go 語言切片是如何擴(kuò)容的?

    在 Go 語言中,有一個(gè)很常用的數(shù)據(jù)結(jié)構(gòu),那就是切片(Slice)。 切片是一個(gè)擁有相同類型元素的可變長(zhǎng)度的序列,它是基于數(shù)組類型做的一層封裝。它非常靈活,支持自動(dòng)擴(kuò)容。 切片是一種引用類型,它有三個(gè)屬性:指針,長(zhǎng)度和容量。 底層源碼定義如下: 指針: 指向

    2024年02月14日
    瀏覽(103)
  • 【Golang】Golang進(jìn)階系列教程--Go 語言數(shù)組和切片的區(qū)別

    【Golang】Golang進(jìn)階系列教程--Go 語言數(shù)組和切片的區(qū)別

    在 Go 語言中,數(shù)組和切片看起來很像,但其實(shí)它們又有很多的不同之處,這篇文章就來說說它們到底有哪些不同。 數(shù)組和切片是兩個(gè)常用的數(shù)據(jù)結(jié)構(gòu)。它們都可以用于存儲(chǔ)一組相同類型的元素,但在底層實(shí)現(xiàn)和使用方式上存在一些重要的區(qū)別。 Go 中數(shù)組的長(zhǎng)度是不可改變的

    2024年02月15日
    瀏覽(31)
  • 【Golang】Golang進(jìn)階系列教程--Go 語言 map 如何順序讀???

    Go 語言中的 map 是一種非常強(qiáng)大的數(shù)據(jù)結(jié)構(gòu),它允許我們快速地存儲(chǔ)和檢索鍵值對(duì)。 然而,當(dāng)我們遍歷 map 時(shí),會(huì)有一個(gè)有趣的現(xiàn)象,那就是輸出的鍵值對(duì)順序是不確定的。 先看一段代碼示例: 當(dāng)我們多執(zhí)行幾次這段代碼時(shí),就會(huì)發(fā)現(xiàn),輸出的順序是不同的。 首先,Go 語言

    2024年02月14日
    瀏覽(98)
  • 【Golang】Golang進(jìn)階系列教程--為什么 Go 語言 struct 要使用 tags

    【Golang】Golang進(jìn)階系列教程--為什么 Go 語言 struct 要使用 tags

    在 Go 語言中,struct 是一種常見的數(shù)據(jù)類型,它可以用來表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。在 struct 中,我們可以定義多個(gè)字段,每個(gè)字段可以有不同的類型和名稱。 除了這些基本信息之外,Go 還提供了 struct tags,它可以用來指定 struct 中每個(gè)字段的元信息。 在本文中,我們將探討為什

    2024年02月15日
    瀏覽(40)
  • 【Golang】Golang進(jìn)階系列教程--為什么 Go 不支持 []T 轉(zhuǎn)換為 []interface

    【Golang】Golang進(jìn)階系列教程--為什么 Go 不支持 []T 轉(zhuǎn)換為 []interface

    在 Go 中,如果 interface{} 作為函數(shù)參數(shù)的話,是可以傳任意參數(shù)的,然后通過類型斷言來轉(zhuǎn)換。 舉個(gè)例子: 不管是傳 int 還是 string,最終都能輸出正確結(jié)果。 那么,既然是這樣的話,我就有一個(gè)疑問了,拿出我舉一反三的能力。是否可以將 []T 轉(zhuǎn)換為 []interface 呢? 比如下面

    2024年02月15日
    瀏覽(41)
  • 【Golang】Golang進(jìn)階系列教程--為什么說 Go 語言字符串是不可變的?

    【Golang】Golang進(jìn)階系列教程--為什么說 Go 語言字符串是不可變的?

    最近有讀者留言說,平時(shí)在寫代碼的過程中,是會(huì)對(duì)字符串進(jìn)行修改的,但網(wǎng)上都說 Go 語言字符串是不可變的,這是為什么呢? 這個(gè)問題本身并不困難,但對(duì)于新手來說確實(shí)容易產(chǎn)生困惑,今天就來回答一下。 首先來看看它的底層結(jié)構(gòu): 和切片的結(jié)構(gòu)很像,只不過少了一個(gè)

    2024年02月14日
    瀏覽(98)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包