English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial di base Golang

Istruzioni di controllo Golang

Funzione e metodo Golang

Struttura Golang

Tagli e array Golang

Stringa Golang (String)

Puntatore Golang

Interfaccia Golang

Concordanza Golang

Eccezioni Golang (Error)

Altri argomenti Golang

Confronto del slice Go

In Go, i tagli sono più potenti, flessibili, comodi e leggeri rispetto agli array. I tagli sono sequenze di lunghezza variabile utilizzate per memorizzare elementi dello stesso tipo, non è permesso memorizzare elementi di tipo diverso nello stesso taglio. Nei tagli Go, è possibile utilizzareCompare()La funzione confronta due segmenti di byte uno con l'altroConfrontoQuesta funzione restituisce un valore intero che rappresenta se queste sezioni sono uguali o diverse, e questi valori sono:

  • Se il risultato è 0, allora slice_1 == slice_2.

  • Se il risultato è -1, allora slice_1 < slice_2.

  • Se il risultato è +1, allora slice_1 > slice_2.

La funzione è definita nel pacchetto bytes, quindi è necessario importare il pacchetto bytes nel programma per accedere alla funzione Compare.

Sintassi:

func Compare(slice_1, slice_2 []byte) int

Parliamo di questo concetto con un esempio:

// confrontare due slice di byte
package main
import (
    "bytes"
    "fmt"
)
func main() {
    // creare e inizializzare le slice di byte utilizzando la dichiarazione abbreviata
    slice_1 := []byte{'G', 'E', 'E', 'K', 'S'}
    slice_2 := []byte{'G', 'E', 'e', 'K', 'S'}
    // confrontare le slice
    // utilizzare la funzione Compare
    res := bytes.Compare(slice_1, slice_2)
    if res == 0 {
        fmt.Println("!..le slice sono uguali..!")
    } else {
        fmt.Println("!..le slice non sono uguali..!")
    }
}

Output:

!..le slice non sono uguali..!

Esempio di confronto di due slice di byte:

package main
import (
    "bytes"
    "fmt"
)
func main() {
    slice_1 := []byte{'A', 'N', 'M', 'O', 'P', 'Q'}
    slice_2 := []byte{'a', 'g', 't', 'e', 'q', 'm'}
    slice_3 := []byte{'A', 'N', 'M', 'O', 'P', 'Q'}
    slice_4 := []byte{'A', 'n', 'M', 'o', 'p', 'Q'}
    // visualizzare le slice
    fmt.Println("slice 1: ", slice_1)
    fmt.Println("slice 2: ", slice_2)
    fmt.Println("slice 3: ", slice_3)
    fmt.Println("slice 4: ", slice_4)
    // confrontare le slice, utilizzare Compare
    res1 := bytes.Compare(slice_1, slice_2)
    res2 := bytes.Compare(slice_1, slice_3)
    res3 := bytes.Compare(slice_1, slice_4)
    res4 := bytes.Compare(slice_2, slice_3)
    res5 := bytes.Compare(slice_2, slice_4)
    res6 := bytes.Compare(slice_2, slice_1)
    res7 := bytes.Compare(slice_3, slice_1)
    res8 := bytes.Compare(slice_3, slice_2)
    res9 := bytes.Compare(slice_3, slice_4)
    res10 := bytes.Compare(slice_4, slice_1)
    res11 := bytes.Compare(slice_4, slice_2)
    res12 := bytes.Compare(slice_4, slice_3)
    res13 := bytes.Compare(slice_4, slice_4)
    fmt.Println("\nRisultato 1:", res1)
    fmt.Println("Risultato 2:", res2)
    fmt.Println("Risultato 3:", res3)
    fmt.Println("Risultato 4:", res4)
    fmt.Println("Risultato 5:", res5)
    fmt.Println("Risultato 6:", res6)
    fmt.Println("Risultato 7:", res7)
    fmt.Println("Risultato 8:", res8)
    fmt.Println("Risultato 9:", res9)
    fmt.Println("Risultato 10:", res10)
    fmt.Println("Risultato 11:", res11)
    fmt.Println("Risultato 12:", res12)
    fmt.Println("Risultato 13:", res13)
}

Output:

Taglio 1: [65 78 77 79 80 81]
Taglio 2: [97 103 116 101 113 109]
Taglio 3: [65 78 77 79 80 81]
Taglio 4: [65 110 77 111 112 81]
Risultato 1: -1
Risultato 2: 0
Risultato 3: -1
Risultato 4: 1
Risultato 5: 1
Risultato 6: 1
Risultato 7: 0
Risultato 8: -1
Risultato 9: -1
Risultato 10: 1
Risultato 11: -1
Risultato 12: 1
Risultato 13: 0