欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go1.21新增cmp包的用法詳解

 更新時(shí)間:2023年08月23日 08:33:33   作者:路多辛  
Go?1.21新增的?cmp?包提供了與比較有序值相關(guān)的類型和函數(shù),前幾篇文章講解的?slices?包中的函數(shù)有大量使用到?cmp?包中的函數(shù)和類型,下面我們就來(lái)看看cmp包的相關(guān)函數(shù)用法吧

cmp.Compare 函數(shù)

定義如下:

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

返回值有以下幾種情況:

  • 如果 x 小于 y,返回-1
  • 如果 x 等于 y,返回 0
  • 如果 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 未來(lái)的版本添加了新的有序類型,則將修改此接口以將新的有序類型包含進(jìn)去。

需要注意的是,浮點(diǎn)類型可能包含NaN(“非數(shù)字”)類型的值。在將 NaN 值與任何其它值(無(wú)論是否為 NaN)進(jìn)行比較時(shí),例如 == 或 < 之類的操作符結(jié)果都是 false。

到此這篇關(guān)于Go1.21新增cmp包的用法詳解的文章就介紹到這了,更多相關(guān)Go1.21 cmp包內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • golang通過context控制并發(fā)的應(yīng)用場(chǎng)景實(shí)現(xiàn)

    golang通過context控制并發(fā)的應(yīng)用場(chǎng)景實(shí)現(xiàn)

    這篇文章主要介紹了golang通過context控制并發(fā)的應(yīng)用場(chǎng)景實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • golang數(shù)據(jù)結(jié)構(gòu)之golang稀疏數(shù)組sparsearray詳解

    golang數(shù)據(jù)結(jié)構(gòu)之golang稀疏數(shù)組sparsearray詳解

    這篇文章主要介紹了golang數(shù)據(jù)結(jié)構(gòu)之golang稀疏數(shù)組sparsearray的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • 如何理解Go函數(shù)是一等公民原理及使用場(chǎng)景

    如何理解Go函數(shù)是一等公民原理及使用場(chǎng)景

    這篇文章主要為大家介紹了如何理解Go函數(shù)是一等公民及使用場(chǎng)景詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • Go語(yǔ)言基本類型轉(zhuǎn)換的實(shí)現(xiàn)示例

    Go語(yǔ)言基本類型轉(zhuǎn)換的實(shí)現(xiàn)示例

    本文詳細(xì)介紹了Go語(yǔ)言中的基本類型轉(zhuǎn)換方法,包括字符串與基本類型之間的轉(zhuǎn)換、浮點(diǎn)數(shù)與字符串之間的轉(zhuǎn)換、布爾型與字符串之間的轉(zhuǎn)換,以及基本類型之間的強(qiáng)制轉(zhuǎn)換以及格式化輸出,感興趣的可以了解一下
    2024-11-11
  • Go 實(shí)現(xiàn)基于Token 的登錄流程深度分析

    Go 實(shí)現(xiàn)基于Token 的登錄流程深度分析

    Token 認(rèn)證機(jī)制的核心思想是,服務(wù)端在用戶登錄時(shí)生成一個(gè) Token,客戶端在后續(xù)的請(qǐng)求中攜帶這個(gè) Token,服務(wù)端通過驗(yàn)證 Token 的有效性來(lái)確認(rèn)用戶的身份,本文將帶你深入探索基于 Token 的登錄流程,這是一種更為靈活且適用于現(xiàn)代應(yīng)用架構(gòu)的認(rèn)證方式
    2024-03-03
  • Go語(yǔ)言中Timer計(jì)時(shí)器的使用技巧詳解

    Go語(yǔ)言中Timer計(jì)時(shí)器的使用技巧詳解

    Go語(yǔ)言中的time包里有個(gè)Timer計(jì)時(shí)器的功能,這篇文章主要就是來(lái)和大家介紹一下Timer計(jì)時(shí)器的使用技巧,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-07-07
  • Go語(yǔ)言處理超大字符串型整數(shù)加減經(jīng)典面試詳解

    Go語(yǔ)言處理超大字符串型整數(shù)加減經(jīng)典面試詳解

    這篇文章主要為大家介紹了Go語(yǔ)言處理超大字符串型整數(shù)加減經(jīng)典面試示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • Go語(yǔ)言操作redis用法實(shí)例

    Go語(yǔ)言操作redis用法實(shí)例

    這篇文章主要介紹了Go語(yǔ)言操作redis用法,實(shí)例分析了Go語(yǔ)言操作redis的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-02-02
  • Golang Goroutine的使用

    Golang Goroutine的使用

    這篇文章主要介紹了Golang Goroutine的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • GoLand編譯帶有構(gòu)建標(biāo)簽的程序思路詳解

    GoLand編譯帶有構(gòu)建標(biāo)簽的程序思路詳解

    這篇文章主要介紹了GoLand編譯帶有構(gòu)建標(biāo)簽的程序,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11

最新評(píng)論