Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan pakej isihan untuk menyusun dalam golang

Cara menggunakan pakej isihan untuk menyusun dalam golang

PHPz
PHPzasal
2023-04-10 14:17:20932semak imbas

Pelaksanaan pengisihan dalam bahasa Go dilaksanakan terutamanya melalui pakej isihan Pakej isihan menyediakan antara muka pengisihan standard, membolehkan kami mengisih pelbagai jenis data dengan mudah. Artikel ini akan memperkenalkan cara menggunakan pakej isihan untuk menyusun dalam golang.

Prinsip pelaksanaan pakej isihan

Pakej isihan terutamanya melaksanakan pengisihan. Antara muka antara muka Ia mempunyai tiga kaedah:

  • Len() int: Mengembalikan bilangan elemen yang diingini untuk diisih.
  • Less(i, j int) bool: Jika elemen i harus diletakkan di hadapan elemen j, kembalikan benar;
  • Tukar(i, j int): Tukar kedudukan unsur i dan j.

Pakej isihan menyediakan fungsi berikut untuk pengisihan:

  • func Ints(a []int): Isih hirisan jenis int dalam tertib menaik.
  • func Float64s(a []float64): Isih hirisan jenis float64 dalam tertib menaik.
  • func Strings(a []string): Isih hirisan jenis rentetan dalam tertib menaik.
  • func IntsAreSorted(a []int) bool: Tentukan sama ada kepingan jenis int telah diisih.
  • func Float64sAreSorted(a []float64) bool: Tentukan sama ada kepingan jenis float64 telah diisih.
  • func StringsAreSorted(a []string) bool: Tentukan sama ada kepingan jenis rentetan telah diisih.
  • func Sort(data Interface): Mengisih data yang melaksanakan sort.Antaramuka.

Kod Contoh

Berikut ialah beberapa kod sampel untuk mengisih kepingan jenis int:

package main

import (  
    "fmt"
    "sort"
)

func main() {  
    data := []int{9, 6, 3, 8, 5, 2, 7, 4, 1}
    sort.Ints(data)
    fmt.Println(data)
}

Outputnya ialah:

[1 2 3 4 5 6 7 8 9]

Berikut ialah kod sampel untuk mengisih menggunakan isihan. Antara muka antara muka:

package main  
import (  
    "fmt"
    "sort"
)

type Person struct {  
    Name string
    Age  int
}

type ByName []Person  
func (this ByName) Len() int {
    return len(this)
}
func (this ByName) Less(i, j int) bool {  
   return this[i].Name < this[j].Name
}
func (this ByName) Swap(i, j int) {  
   this[i], this[j] = this[j], this[i]
}

func main() {  
    people := []Person{
      {"Bob", 31},
      {"John", 42},
      {"Jane", 29},
      {"Michael", 17},
      {"Chris", 51},
      {"Sarah", 37},
    }
    sort.Sort(ByName(people))
    fmt.Println(people)
}

Hasil output ialah:

[{Bob 31} {Chris 51} {Jane 29} {John 42} {Michael 17} {Sarah 37}]

Kod di atas mula-mula mentakrifkan badan struktur Orang dan Jenis Nama. Jenis ByName melaksanakan tiga kaedah jenis. Antara muka antara muka, yang digunakan untuk memberitahu pakej isihan cara membandingkan dua elemen dan cara menukar elemen. Kemudian pembolehubah orang ditakrifkan untuk menyimpan data jenis Orang. Akhir sekali, fungsi sort.Sort dipanggil untuk mengisih orang dalam tertib menaik mengikut nama dan mengeluarkan hasilnya.

Ringkasan

Artikel ini memperkenalkan kaedah menggunakan pakej isihan untuk mengisih dalam golang, prinsip pelaksanaan pakej isihan dan beberapa kod sampel. Untuk jenis data diisih, kita hanya perlu melaksanakan tiga kaedah dalam isihan. Antara muka pakej sudah menyediakan fungsi pengisihan untuk jenis data biasa seperti int, float64 dan rentetan Apabila menggunakannya, anda hanya perlu panggil Can.

Atas ialah kandungan terperinci Cara menggunakan pakej isihan untuk menyusun dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn