Sobes.tech
Junior — Middle

Kā notiek argumentu nodošana funkcijās Go valodā?

sobes.tech AI

Atbilde no AI

Go valodā funkcijās argumenti tiek nodoti pēc vērtības. Tas nozīmē, ka, izsaucot funkciju, tiek nodotas argumentu vērtību kopijas, un izmaiņas funkcijas iekšienē neietekmē oriģinālās mainīgās.

Ja nepieciešams mainīt mainīgās vērtību no izsaucējošā koda, tiek nodots norādītājs uz šo mainīgo. Tad funkcija saņem adresi un var mainīt vērtību šajā adresē.

Piemērs, kā nodot pēc vērtības un pēc norādītāja:

package main
import "fmt"

func incrementByValue(x int) {
    x = x + 1
}

func incrementByPointer(x *int) {
    *x = *x + 1
}

func main() {
    a := 5
    incrementByValue(a)
    fmt.Println(a) // Izdrukās 5, jo nodots pēc vērtības

    incrementByPointer(&a)
    fmt.Println(a) // Izdrukās 6, jo nodots pēc norādītāja
}