English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
GoUm ponteiro em uma linguagem de programação ou no Golang é uma variável usada para armazenar outrouma variáveldo endereço de memória. Earrayum sequência de comprimento fixo, usada para armazenar elementos do mesmo tipo na memória.
Você pode usar um ponteiro para o array e passá-lo como parâmetro para a função. Para entender esse conceito, vamos dar um exemplo. No programa abaixo, usaremos um contendo5um array de ponteiros para elementosarr。Queremos usar a função para atualizar esse array. Isso significa que dentro da função alteramos o array ({78,89,45,56,14}),e isso será refletido no chamador. Portanto, aqui usamosupdatearrayA função, que tem como tipo de parâmetro um ponteiro para o array. Usandoupdatearray(&arr)O código, passamos o endereço do array. Dentro da função (*funarr)[4] = 750 Ou funarr[4] = 750 O código usa a forma de desreferência para atribuir novos valores ao array, que refletirão no array original. Finalmente, o programa fornecerá a saída[78 89 45 56 750]。
// O programa Golang passa ponteiros para //Array como parâmetro da função package main import "fmt" //Definir uma função func updatearray(funarr *[5]int) { // Usar valor de índice para alterar o array (*funarr)[4] = 750 //Você também pode escrever //A linha de código acima // funarr[4] = 750 } func main() { //Obter ponteiro para o array arr := [5int{78, 89, 45, 56, 14} //Passar ponteiro para o array //E execute updatearray updatearray(&arr) //Array atualizado fmt.Println(arr) }
Saída:
[78 89 45 56 750]
Atenção:Em Golang, não é recomendado usar ponteiros para arrays como parâmetro de função, pois o código torna-se difícil de ler. Da mesma forma, também não é uma boa maneira de implementar essa função. Para isso, você pode usar fatia em vez de passar ponteiros.
// Programa em Golang para exemplificar //Usar fatia como parâmetro da função package main import "fmt" func updateslice(funarr []int) { //Atualizar valor //No índice especificado funarr[4] = 750 } func main() { //Definir um fatia s := [5int{78, 89, 45, 56, 14} //Passar fatia para //Função updateslice updateslice(s[:]) //Exibir resultado fmt.Println(s) }
Saída:
[78 89 45 56 750]