Go - Tableau de pointeurs

Avant de comprendre le concept de tableaux de pointeurs, considérons l'exemple suivant, qui utilise un tableau de 3 entiers -

package main

import "fmt"
 
const MAX int = 3
 
func main() {
   a := []int{10,100,200}
   var i int

   for i = 0; i < MAX; i++ {
      fmt.Printf("Value of a[%d] = %d\n", i, a[i] )
   }
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

Value of a[0] = 10
Value of a[1] = 100
Value of a2] = 200

Il peut y avoir une situation où nous voulons maintenir un tableau, qui peut stocker des pointeurs vers un entier ou une chaîne ou tout autre type de données disponible. L'instruction suivante déclare un tableau de pointeurs vers un entier -

var ptr [MAX]*int;

Cela déclare ptrcomme un tableau de pointeurs entiers MAX. Ainsi, chaque élément de ptr contient désormais un pointeur vers une valeur int. L'exemple suivant utilise trois entiers, qui seront stockés dans un tableau de pointeurs comme suit -

package main

import "fmt"
 
const MAX int = 3
 
func main() {
   a := []int{10,100,200}
   var i int
   var ptr [MAX]*int;

   for  i = 0; i < MAX; i++ {
      ptr[i] = &a[i] /* assign the address of integer. */
   }
   for  i = 0; i < MAX; i++ {
      fmt.Printf("Value of a[%d] = %d\n", i,*ptr[i] )
   }
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

Value of a[0] = 10
Value of a[1] = 100
Value of a[2] = 200