最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go 1.21新增的slices包中切片函數(shù)用法詳解

 更新時(shí)間:2023年08月22日 09:44:10   作者:路多辛  
Go 1.21新增的 slices 包提供了很多和切片相關(guān)的函數(shù),可以用于任何類(lèi)型的切片,本文通過(guò)代碼示例為大家介紹了部分切片函數(shù)的具體用法,感興趣的小伙伴可以了解一下

slices.Max

定義如下:

func Max[S ~[]E, E cmp.Ordered](x S) E

返回 x 中的最大值,如果 x 為空,則 panic。對(duì)于浮點(diǎn)數(shù) E, 如果有元素為 NaN,結(jié)果就是 NaN。簡(jiǎn)單示例如下:

package main
import (
	"fmt"
	"math"
	"slices"
)
func main() {
	numbers := []int{0, 10, -1, 8}
	fmt.Println(slices.Max(numbers)) // 10 
	numbers2 := []float64{0, 10, -1, 8, math.NaN()}
	fmt.Println(slices.Max(numbers2)) // NaN
}

slices.MaxFunc

定義如下:

func MaxFunc[S ~[]E, E any](x S, cmp func(a, b E) int) E

返回 x 中的最大值,使用 cmp 函數(shù)來(lái)比較元素,如果 x 為空,則 panic。如果根據(jù) cmp 函數(shù)計(jì)算后有多個(gè)最大元素,返回第一個(gè)。簡(jiǎn)單示例如下:

package main
import (
	"cmp"
	"fmt"
	"slices"
)
func main() {
	type Person struct {
		Name string
		Age  int
	}
	people := []Person{
		{"Gopher", 13},
		{"Alice", 55},
		{"Vera", 24},
		{"Bob", 55},
	}
	firstOldest := slices.MaxFunc(people, func(a, b Person) int {
		return cmp.Compare(a.Age, b.Age)
	})
	fmt.Println(firstOldest.Name) // Alice
}

slices.Min

定義如下:

func Min[S ~[]E, E cmp.Ordered](x S) E

返回 x 中的最小值,如果 x 為空,則 panic。對(duì)于浮點(diǎn)數(shù) E, 如果有元素為 NaN,結(jié)果就是 NaN。簡(jiǎn)單示例如下:

package main
import (
	"fmt"
	"math"
	"slices"
)
func main() {
	numbers := []int{0, 10, -1, 8}
	fmt.Println(slices.Min(numbers)) // -1
	numbers2 := []float64{0, 10, -1, 8, math.NaN()}
	fmt.Println(slices.Min(numbers2)) // NaN
}

slices.MinFunc

定義如下:

func MinFunc[S ~[]E, E any](x S, cmp func(a, b E) int) E

返回 x 中的最小值,使用 cmp 函數(shù)來(lái)比較元素,如果 x 為空,則 panic。如果根據(jù) cmp 函數(shù)計(jì)算后有多個(gè)最小元素,返回第一個(gè)。簡(jiǎn)單示例如下:

package main
import (
	"cmp"
	"fmt"
	"slices"
)
func main() {
	type Person struct {
		Name string
		Age  int
	}
	people := []Person{
		{"Gopher", 13},
		{"Alice", 55},
		{"Vera", 24},
		{"Bob", 55},
	}
	firstYoungest := slices.MinFunc(people, func(a, b Person) int {
		return cmp.Compare(a.Age, b.Age)
	})
	fmt.Println(firstYoungest.Name) // Gopher
}

slices.Replace

定義如下:

func Replace[S ~[]E, E any](s S, i, j int, v ...E) S

將元素 s[i:j] 替換為給定的 v,并返回修改后的切片。如果 s[i:j] 不是 s 的一部分,則 panic。簡(jiǎn)單示例如下:

package main
import (
	"fmt"
	"slices"
)
func main() {
	names := []string{"Alice", "Bob", "Vera", "Zac"}
	names = slices.Replace(names, 1, 3, "Bill", "Billie", "Cat")
	fmt.Println(names) // [Alice Bill Billie Cat Zac]
}

slices.Reverse

定義如下:

func Reverse[S ~[]E, E any](s S)

反轉(zhuǎn)切片中的元素。簡(jiǎn)單示例如下:

package main
import (
	"fmt"
	"slices"
)
func main() {
	names := []string{"alice", "Bob", "VERA"}
	slices.Reverse(names)
	fmt.Println(names) // [VERA Bob alice]
}

slices.Sort

定義如下:

func Sort[S ~[]E, E cmp.Ordered](x S)

對(duì)有序類(lèi)型的切片進(jìn)行升序排序。對(duì)于浮點(diǎn)數(shù)類(lèi)型,NaN 排在其它值之前。簡(jiǎn)單示例如下:

package main
import (
	"fmt"
	"math"
	"slices"
)
func main() {
	s1 := []int8{0, 42, -10, 8}
	slices.Sort(s1) 
	fmt.Println(s1) // [-10 0 8 42]
	s2 := []float64{0, math.NaN(), -10, 8, math.NaN()}
	slices.Sort(s2)
	fmt.Println(s2) // [NaN NaN -10 0 8]
}

slices.SortFunc

定義如下:

func SortFunc[S ~[]E, E any](x S, cmp func(a, b E) int)

按照 cmp 函數(shù)確定的升序?qū)η衅?x 進(jìn)行排序,這種排序不能保證穩(wěn)定。Cmp (a, b) 函數(shù)應(yīng)該在 a < b 時(shí)返回一個(gè)負(fù)數(shù),在 a > b 時(shí)返回一個(gè)正數(shù),在 a == b 時(shí)返回零。SortFunc 要求 cmp 函數(shù)是嚴(yán)格的弱排序類(lèi)型。簡(jiǎn)單示例如下:

package main
import (
	"cmp"
	"fmt"
	"slices"
	"strings"
)
func main() {
	names := []string{"Bob", "alice", "VERA"}
	slices.SortFunc(names, func(a, b string) int {
		return cmp.Compare(strings.ToLower(a), strings.ToLower(b))
	})
	fmt.Println(names) // [alice Bob VERA]
}

slices.SortStableFunc

定義如下:

func SortStableFunc[S ~[]E, E any](x S, cmp func(a, b E) int)

對(duì)切片 x 進(jìn)行排序,同時(shí)保持相等元素的原始順序,使用 cmp 以與 SortFunc 相同的方式比較元素。簡(jiǎn)單示例如下:

package main
import (
	"cmp"
	"fmt"
	"slices"
)
func main() {
	type Person struct {
		Name string
		Age  int
	}
	people := []Person{
		{"Gopher", 13},
		{"Alice", 20},
		{"Bob", 24},
		{"Alice", 55},
	}
	// Stable sort by name, keeping age ordering of Alices intact
	slices.SortStableFunc(people, func(a, b Person) int {
		return cmp.Compare(a.Name, b.Name)
	})
	fmt.Println(people) // [{Alice 20} {Alice 55} {Bob 24} {Gopher 13}]
}

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

相關(guān)文章

  • Golang小數(shù)操作指南之判斷小數(shù)點(diǎn)位數(shù)與四舍五入

    Golang小數(shù)操作指南之判斷小數(shù)點(diǎn)位數(shù)與四舍五入

    這篇文章主要給大家介紹了關(guān)于Golang小數(shù)操作指南之判斷小數(shù)點(diǎn)位數(shù)與四舍五入的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-03-03
  • GO語(yǔ)言的數(shù)組array與切片slice詳解

    GO語(yǔ)言的數(shù)組array與切片slice詳解

    這篇文章主要介紹了GO語(yǔ)言的數(shù)組array與切片slice,包括了GO語(yǔ)言數(shù)組定義賦值,GO語(yǔ)言多維數(shù)組,GO語(yǔ)言切片等知識(shí)點(diǎn)需要的朋友可以參考下
    2022-12-12
  • Golang中的godoc使用簡(jiǎn)介(推薦)

    Golang中的godoc使用簡(jiǎn)介(推薦)

    Godoc是go語(yǔ)言的文檔化工具,類(lèi)似于文檔化工具godoc,類(lèi)似于Python的Docstring和Java的Javadoc,這篇文章主要介紹了Golang中的godoc使用簡(jiǎn)介,需要的朋友可以參考下
    2022-10-10
  • Go語(yǔ)言入門(mén)學(xué)習(xí)之Channel通道詳解

    Go語(yǔ)言入門(mén)學(xué)習(xí)之Channel通道詳解

    go routine可以使用channel來(lái)進(jìn)行通信,使用通信的手段來(lái)共享內(nèi)存,下面這篇文章主要給大家介紹了關(guān)于Go語(yǔ)言入門(mén)學(xué)習(xí)之Channel通道的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • Golang干貨分享之利用AST實(shí)現(xiàn)AOP功能

    Golang干貨分享之利用AST實(shí)現(xiàn)AOP功能

    本文主要是一個(gè)純干貨分享,主要介紹了Golang如何利用AST實(shí)現(xiàn)AOP功能,文中的示例代碼簡(jiǎn)潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-04-04
  • Golang中的關(guān)鍵字(defer、:=、go?func())詳細(xì)解讀

    Golang中的關(guān)鍵字(defer、:=、go?func())詳細(xì)解讀

    這篇文章主要介紹了Golang中的關(guān)鍵字(defer、:=、go?func())詳細(xì)解讀,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • golang croncli 定時(shí)器命令詳解

    golang croncli 定時(shí)器命令詳解

    定時(shí)器是執(zhí)行任務(wù)時(shí)的常用功能,配置系統(tǒng)的定時(shí)任務(wù)太麻煩,所以就想用golang簡(jiǎn)單實(shí)現(xiàn)一個(gè)定時(shí)器命令,包括定時(shí)器命令格式、定時(shí)執(zhí)行命令的相關(guān)知識(shí),感興趣的朋友跟隨小編一起看看吧
    2022-03-03
  • 1行Go代碼實(shí)現(xiàn)反向代理的示例

    1行Go代碼實(shí)現(xiàn)反向代理的示例

    這篇文章主要介紹了1行Go代碼實(shí)現(xiàn)反向代理的示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • golang 限制同一時(shí)間的并發(fā)量操作

    golang 限制同一時(shí)間的并發(fā)量操作

    這篇文章主要介紹了golang 限制同一時(shí)間的并發(fā)量操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • Go壓縮位圖庫(kù)roaring安裝使用詳解

    Go壓縮位圖庫(kù)roaring安裝使用詳解

    這篇文章主要為大家介紹了Go壓縮位圖庫(kù)roaring安裝使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07

最新評(píng)論

定陶县| 西林县| 仙居县| 岳阳市| 九江市| 金华市| 怀来县| 桂阳县| 双鸭山市| 东莞市| 长阳| 兴安县| 浑源县| 松潘县| 栖霞市| 潼关县| 定陶县| 凤冈县| 汉中市| 通道| 凌海市| 清丰县| 德格县| 汾西县| 固始县| 紫金县| 老河口市| 鹿泉市| 台安县| 孟州市| 大新县| 郴州市| 南乐县| 浦东新区| 英超| 洛川县| 潮安县| 济南市| 武功县| 惠来县| 凤阳县|