Sobes.tech
Junior — Middle

Kuidas õigesti luua ja initsialiseerida slices Go keeles?

sobes.tech AI

Vastus AI-lt

Go keeles on viilud (slices) dünaamilised andmestruktuurid, mis esindavad viidet massiivile koos määratud pikkuse ja mahutavusega.

Viile saab luua ja initsialiseerida mitmel viisil:

  1. Viilu deklareerimine ilma initsialiseerimiseta (null-viil):
var s []int // null-viil, pikkus ja mahutavus 0
  1. Literal kasutamine viilu initsialiseerimiseks:
s := []int{1, 2, 3} // pikkusega 3 viil
  1. Viilu loomine make funktsiooni abil:
s := make([]int, 5) // pikkusega 5, täidetud nullidega
s2 := make([]int, 3, 10) // pikkus 3, mahutavus 10

make funktsioon eraldab taustal massiivi ja tagastab viilu, mis sellele viitab.

  1. Massiivist viilu loomine:
arr := [5]int{1, 2, 3, 4, 5}
s := arr[1:4] // elementide viil indeksitega 1,2,3

Oluline on meeles pidada, et viilud on viited massiividele, seega elementide muutmine viilul muudab ka algset massiivi.

Näide kasutusest:

package main
import "fmt"

func main() {
    s := make([]int, 3, 5)
    fmt.Println(s)       // [0 0 0]
    fmt.Println(len(s))  // 3
    fmt.Println(cap(s))  // 5

    s = append(s, 4, 5)
    fmt.Println(s)       // [0 0 0 4 5]
    fmt.Println(len(s))  // 5
    fmt.Println(cap(s))  // 5
}

See lähenemine võimaldab tõhusalt töötada dünaamiliste massiividega Go keeles.