Taulukoiden 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
123func myFunc(arr [5] int) { // code here }
Seuraava esimerkki havainnollistaa taulukon välittämistä funktiolle ja sen käyttämistä:
index.go
123456789101112131415package 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
12345678910111213package 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.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
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
Taulukoiden 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
123func myFunc(arr [5] int) { // code here }
Seuraava esimerkki havainnollistaa taulukon välittämistä funktiolle ja sen käyttämistä:
index.go
123456789101112131415package 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
12345678910111213package 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.
Kiitos palautteestasi!