Tipet kompozite: Vargjet
Vargjet (arrays) dhe struktet (structs) janë tipe agregate, vlerat e tyre janë lista të vlerave të tjera në memorje.
Të gjitha elementet e një vargu janë të një tipi, ndërkohë që strukturat mund të përmbajnë vlera të tipeve të ndryshme.
Si vargjet, ashtu edhe struktet kanë madhësi fikse.
Vargjet
Vargu është një sekuencë e gjatësisë fikse të vlerave të tipit të caktuar. Për shkak të gjatësisë fikse, vargjet shumë rrallë përdoren drejtpërsëdrejti. Në vend të përdorimit direkt të vargjeve, në Go rekomandohet përdorimi i rriskave (slices), të cilave mund t’u shtohen apo largohen elementet, sipas nevojës.
Anëtarëve individualë të vargut mund t’i qasemi duke përdorur indeksin, dhe indeksi i elementit të parë është zeroja. Numrin e elementeve të një vargu e lexojmë me funksionin len().
1 var a = [5]int{7, 2, 3, 4, 9} // Vargu a me 5 numra të plotë
2 fmt.Println(a[0]) // Shtype anëtarin e parë të vargut a
3 fmt.Println(len(a)) // Trego sa anëtarë i ka vargu a
4 fmt.Println(a[len(a)-1]) // Shtype anëtarin e fundit të vargut a
https://play.golang.org/p/r_en5mgRAHS
Me përdorimin e strukturës for mund t’iu qasemi në mënyrë sekuencionale indekseve dhe anëtarëve të një vargu.
1 package main
2
3 import (
4 "fmt"
5 )
6
7 func main() {
8 var a = [5]int{7, 2, 3, 4, 9}
9
10 // Shtypi indekset dhe vlerat e anëtarëve të vargut
11 for i, v := range a {
12 fmt.Printf("%d %d\n", i, v)
13 }
14
15 // Shtypi vlerat e anëtarëve të vargut
16 for _, v := range a {
17 fmt.Printf("%d\n", v)
18 }
19 }
https://play.golang.org/p/WQu60tVtTpq
Elementet e një vargu të ri kanë “zero vlerë” , që në rastin e numrave është zero, për stringjet - string i zbrazët (“”). Në shembullin vijues, anëtarit të tretë (me indeksin 2), nuk i është dhënë vlerë, prandaj x[2] ka vlerë 0.
1 package main
2
3 import (
4 "fmt"
5 )
6
7 func main() {
8 var x [3]int = [3]int{1, 2}
9 fmt.Println(x[2])
10 }