Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Taulukoiden Välittäminen Funktioihin | Taulukot ja Viipaleet
Johdatus Golangiin

bookTaulukoiden Välittäminen Funktioihin

Hyödyllinen ominaisuus on mahdollisuus välittää taulukoita funktioihin, jolloin voimme käyttää näitä taulukoita muissa laajuuksissa, erityisesti kun ne on määritelty paikallisesti.

Yleinen syntaksi taulukkoargumentille funktiossa on seuraava:

argName [expectedArraySize] dataType

Tämän toteuttaminen funktiossa näyttäisi esimerkiksi tältä:

index.go

index.go

copy
123
func myFunc(arr [5] int) { // code here }

Seuraava esimerkki havainnollistaa taulukon välittämistä funktiolle ja sen käyttämistä:

index.go

index.go

copy
123456789101112131415
package main import "fmt" func sumOfAll(arr [10] int) int { total := 0 for i := 0; i < 10; i++ { total += arr[i] } return total } func main() { var numbers = [10] int { 1, 3, 5, 7, 9, 11, 13, 15, 17, 19 } fmt.Printf("Sum: %d", sumOfAll(numbers)) }

Go:ssa (Golang) taulukot välitetään aina arvon mukaan funktioihin. Tämä tarkoittaa, että kun taulukko välitetään funktiolle, alkuperäisestä taulukosta luodaan paikallinen kopio funktion sisällä. Tämän seurauksena kaikki muutokset, joita tehdään taulukkoon funktion sisällä, eivät vaikuta alkuperäiseen taulukkoon, koska funktion sisällä käsitellään kopiota alkuperäisestä taulukosta.

Seuraava ohjelma havainnollistaa, että taulukon muuttaminen funktion sisällä ei vaikuta alkuperäiseen taulukkoon:

index.go

index.go

copy
12345678910111213
package main import "fmt" func myFunc(nums [3] int) { nums[1] = 10 } func main() { var values = [3] int {1, 2, 3} fmt.Println("Before:", values) myFunc(values) fmt.Println("After: ", values) }

Huomio

Arvon siirtämisen sijaan on olemassa käsite viitteen kautta siirtämisestä, jolloin taulukon tai muuttujan viite välitetään funktiolle. Tämän seurauksena arvon muuttaminen funktion sisällä muuttaa myös alkuperäistä arvoa. Joissakin ohjelmointikielissä taulukot siirretään oletuksena viitteen kautta.

question mark

Mikä on oikea koodi myFunc-funktion parametrille:

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 5. Luku 8

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Suggested prompts:

Can you explain the difference between passing by value and passing by reference in more detail?

Are there ways to modify the original array inside a function in Go?

Can you show an example of passing an array by reference in Go?

Awesome!

Completion rate improved to 1.96

bookTaulukoiden Välittäminen Funktioihin

Pyyhkäise näyttääksesi valikon

Hyödyllinen ominaisuus on mahdollisuus välittää taulukoita funktioihin, jolloin voimme käyttää näitä taulukoita muissa laajuuksissa, erityisesti kun ne on määritelty paikallisesti.

Yleinen syntaksi taulukkoargumentille funktiossa on seuraava:

argName [expectedArraySize] dataType

Tämän toteuttaminen funktiossa näyttäisi esimerkiksi tältä:

index.go

index.go

copy
123
func myFunc(arr [5] int) { // code here }

Seuraava esimerkki havainnollistaa taulukon välittämistä funktiolle ja sen käyttämistä:

index.go

index.go

copy
123456789101112131415
package main import "fmt" func sumOfAll(arr [10] int) int { total := 0 for i := 0; i < 10; i++ { total += arr[i] } return total } func main() { var numbers = [10] int { 1, 3, 5, 7, 9, 11, 13, 15, 17, 19 } fmt.Printf("Sum: %d", sumOfAll(numbers)) }

Go:ssa (Golang) taulukot välitetään aina arvon mukaan funktioihin. Tämä tarkoittaa, että kun taulukko välitetään funktiolle, alkuperäisestä taulukosta luodaan paikallinen kopio funktion sisällä. Tämän seurauksena kaikki muutokset, joita tehdään taulukkoon funktion sisällä, eivät vaikuta alkuperäiseen taulukkoon, koska funktion sisällä käsitellään kopiota alkuperäisestä taulukosta.

Seuraava ohjelma havainnollistaa, että taulukon muuttaminen funktion sisällä ei vaikuta alkuperäiseen taulukkoon:

index.go

index.go

copy
12345678910111213
package main import "fmt" func myFunc(nums [3] int) { nums[1] = 10 } func main() { var values = [3] int {1, 2, 3} fmt.Println("Before:", values) myFunc(values) fmt.Println("After: ", values) }

Huomio

Arvon siirtämisen sijaan on olemassa käsite viitteen kautta siirtämisestä, jolloin taulukon tai muuttujan viite välitetään funktiolle. Tämän seurauksena arvon muuttaminen funktion sisällä muuttaa myös alkuperäistä arvoa. Joissakin ohjelmointikielissä taulukot siirretään oletuksena viitteen kautta.

question mark

Mikä on oikea koodi myFunc-funktion parametrille:

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 5. Luku 8
some-alt