ホームページ >バックエンド開発 >Golang >golangのsort.Slice関数を使用してスライスを並べ替える方法

golangのsort.Slice関数を使用してスライスを並べ替える方法

王林
王林オリジナル
2023-11-18 09:10:562281ブラウズ

golangのsort.Slice関数を使用してスライスを並べ替える方法

スライスの並べ替えは Golang でよく使用される関数であり、sort.Slice 関数を使用してすぐに実装できます。この関数を使用すると、カスタム比較関数を渡すことでスライスを並べ替えることができます。

sort.Slice関数は次のように定義されています。

func Slice(slice interface{}, less func(i, j int) bool)

このうち、sliceパラメータはソート対象のスライスを指定し、lessパラメータは比較規則を定義するための比較関数です。スライス要素の。

以下は、sort.Slice 関数を使用してスライスを並べ替える方法を示すサンプル コードです。

package main

import (
    "fmt"
    "sort"
)

type Person struct {
    Name string
    Age  int
}

type Persons []Person

func (p Persons) Len() int {
    return len(p)
}

func (p Persons) Less(i, j int) bool {
    return p[i].Age < p[j].Age
}

func (p Persons) Swap(i, j int) {
    p[i], p[j] = p[j], p[i]
}

func main() {
    persons := Persons{
        {"Alice", 25},
        {"Bob", 30},
        {"Charlie", 20},
        {"David", 35},
    }

    fmt.Println("Before sort:", persons)

    sort.Slice(persons, func(i, j int) bool {
        return persons[i].Age < persons[j].Age
    })

    fmt.Println("After sort:", persons)
}

上記のコードでは、パーソン構造体とパーソン スライス タイプを定義します。 Persons タイプは、並べ替えパッケージに 3 つのインターフェイス (Len、Less、および Swap) を実装しており、これにより、人を並べ替えることができることを示します。

main 関数では、次のコードで人物スライス インスタンスを定義し、sort.Slice 関数を使用してスライスを並べ替えます。この場合、less パラメーターとして匿名関数を渡すことによって、Person.Age フィールドによって昇順に並べ替える方法を定義します。

最後にソート結果を出力すると、ソートが完了していることがわかります。

概要:

sort.Slice 関数は、Golang でのスライス ソートのショートカットです。さまざまな比較関数を渡すことで、さまざまな照合順序を定義できます。 sort.Slice で比較関数を渡す場合、匿名関数または sort インターフェイスを実装する構造体を使用できます。

以上がgolangのsort.Slice関数を使用してスライスを並べ替える方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。