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 }

https://play.golang.org/p/yJ3X4GPspOD