le mie informazioni di contatto
Posta[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Abbiamo introdotto se e per nel nostro articolo precedente. Questo non dovrebbe essere messo in pratica. Facciamo pratica su come usarlo.continue
Istruzione per calcolare la somma dei numeri pari entro 100. Mentre scriviamo il codice,continue
ci aiuterà a saltare alcune iterazioni che non sono necessarie, ad esempio, in questo esempio salteremo tutti i numeri dispari.
- sum := 0
- for i := 1; i < 100; i++{
- if i & 1 == 0 {
- continue
- }
- sum += i
- }
-
- fmt.Println("the sum is",sum)
Nella programmazione, spesso abbiamo a che fare con un insieme di elementi dello stesso tipo e questi insiemi di elementi sono rappresentati da strutture dati specifiche nel linguaggio Go. Oggi ti presenterò in dettaglio diversi tipi di raccolta in Go: array, slice e map.
Innanzitutto, iniziamo con gli array. L'array è la struttura dati più elementare di Go. È una sequenza di elementi dello stesso tipo a lunghezza fissa. Una volta dichiarato un array, la sua lunghezza non può essere modificata. La dichiarazione e l'inizializzazione degli array sono molto semplici,
Quando si dichiara un array, è necessario specificare il tipo e la lunghezza dell'array. Ecco come viene dichiarato un array:
var arrayName [arrayLength]elementType
Ad esempio, dichiara un array di numeri interi di lunghezza 5:
var numbers [5]int
Puoi inizializzare un array in vari modi:
var numbers = [5]int{1, 2, 3, 4, 5}
:=
Breve dichiarazione:numbers := [5]int{1, 2, 3, 4, 5}
numbers := [...]int{1, 2, 3, 4, 5}
numbers := [5]int{0: 1, 4: 5}
Puoi accedere agli elementi di un array per indice, a partire da 0:
value := numbers[2] // 获取索引为 2 的元素
Puoi usarefor
Passa in rassegna tutti gli elementi di un array:
- for i, value := range numbers {
- fmt.Printf("Index: %d, Value: %dn", i, value)
- }
Puoi usare il built-inlen
Funzione per ottenere la lunghezza di un array:
length := len(numbers)
Se un array non viene inizializzato esplicitamente, i suoi elementi vengono automaticamente impostati sul valore zero del relativo tipo. Ad esempio, il valore zero di un array di numeri interi è 0:
var numbers [5]int // 所有元素都是 0
Il linguaggio Go supporta anche array multidimensionali. Quello che segue è un esempio di dichiarazione e inizializzazione di un array di numeri interi 2x3:
- var matrix [2][3]int
- matrix = [2][3]int{{1, 2, 3}, {4, 5, 6}}
Poiché la lunghezza dell'array è fissa, in alcuni casi potrebbe non essere molto flessibile. Se hai bisogno di una raccolta di lunghezza variabile, puoi utilizzare le sezioni.
Il prossimo è slice, che è un tipo integrato più flessibile che può essere pensato come un array dinamico. La lunghezza della sezione è variabile e viene creata in base a un array, offrendo maggiore comodità. Ecco come dichiarare e inizializzare una porzione:
- s := make([]int, 3) // 创建一个长度为3的整型切片
- s[0] = 1 // 切片元素赋值
- s[1] = 2
- s[2] = 3
- s = append(s, 4) // 向切片追加元素
Nel linguaggio Go, sebbene gli array e le slice siano entrambi utilizzati per archiviare una serie di elementi dello stesso tipo, presentano differenze significative nell'allocazione della memoria, nella variabilità delle dimensioni e nell'utilizzo. Ecco le principali differenze tra array e slice:
[3]int
E[4]int
sono di tipi diversi.[]int
È il tipo comune per tutte le sezioni intere.make
Funzione o sezione da un array da inizializzare, nessuna dimensione specificata.Ecco alcuni esempi di inizializzazione per array e sezioni:
- // 数组
- var arr [3]int = [3]int{1, 2, 3}
-
- // 切片
- var slice []int = []int{1, 2, 3}
- // 或者使用 make 函数
- slice := make([]int, 3)
append
La funzione aggiunge elementi o ottiene sottosezioni tramite operazioni di sezionamento.L'array sottostante della fetta può essere allocato sull'heap e anche la complessità temporale dell'accesso agli elementi della fetta è O (1), maappend
Può comportare la riallocazione dell'array sottostante, che in genere è un'operazione O(n).Infine, diamo un'occhiata alla mappatura. Una mappa è un array associativo in Go che associa le chiavi ai valori. Le chiavi della mappa possono essere di qualsiasi tipo supportato dall'operatore di uguaglianza, come numeri interi, numeri in virgola mobile, stringhe, puntatori, interfacce (purché i valori contenuti nell'interfaccia siano confrontabili), strutture e array. Il valore mappato può essere di qualsiasi tipo.
La sintassi per dichiarare una mappa è la seguente:
var mapName map[keyType]valueType
Ad esempio, dichiara una mappa con chiavi come stringhe e valori come numeri interi:
var scores map[string]int
Dopo aver dichiarato la mappa, devi passaremake
funzione per inizializzarlo in modo che possa essere utilizzato:
scores = make(map[string]int)
In alternativa, puoi utilizzare una breve dichiarazione e inizializzare:
scores := make(map[string]int)
Puoi anche utilizzare i valori letterali per l'inizializzazione al momento della dichiarazione:
- scores := map[string]int{
- "alice": 90,
- "bob": 85,
- "charlie": 88,
- }
scores["alice"] = 90
value := scores["alice"]
Se la chiave non esiste, verrà restituito un valore zero per quel tipo di valore.
Puoi usare l'espressione virgola -ok per verificare se la chiave esiste nella mappa:
- value, exists := scores["alice"]
- if exists {
- // 键存在
- } else {
- // 键不存在
- }
utilizzodelete
La funzione può rimuovere una coppia chiave-valore dalla mappa:
delete(scores, "alice")
Se la chiave non esiste,delete
La funzione non fa nulla.
utilizzofor
Un ciclo può attraversare tutte le coppie chiave-valore nella mappa:
- for key, value := range scores {
- fmt.Printf("%s: %dn", key, value)
- }
Il valore zero della mappa ènil
.unonil
Una mappa non ha una struttura dati sottostante e non può aggiungere elementi.Prima di aggiungere elementi alla mappa, è necessario utilizzaremake
Inizializzalo.
Puoi usare il built-inlen
Funzione per ottenere il numero di coppie chiave-valore nella mappa:
length := len(scores)
Le chiavi della mappa possono essere di qualsiasi tipo comparabile, come numeri interi, numeri in virgola mobile, stringhe, puntatori, interfacce (purché i valori contenuti nell'interfaccia siano comparabili), strutture, array, ecc. Porzioni, mappe e funzioni non possono essere utilizzate come chiavi di mappa poiché questi tipi non supportano i confronti di uguaglianza.
Nel linguaggio Go, array, slice e mappe sono tre strutture dati comunemente utilizzate, ognuna delle quali ha caratteristiche e considerazioni diverse. Ecco alcuni punti da notare quando li si utilizza:
nil
, deve essere inizializzato prima dell'uso.nil
,nil
La mappa non può essere utilizzata per archiviare coppie chiave-valore e deve essere inizializzata prima dell'uso.delete
L'eliminazione di una chiave che non esiste non genera un errore, ma è sicuro verificare se la chiave esiste.