Maison > développement back-end > Golang > Explication détaillée du transfert de tableau Golang

Explication détaillée du transfert de tableau Golang

藏色散人
Libérer: 2020-11-23 14:59:36
avant
3980 Les gens l'ont consulté

Ce qui suit est la rubrique tutoriel golang pour vous présenter le passage des tableaux Golang. J'espère qu'il sera utile aux amis dans le besoin !

Explication détaillée du transfert de tableau Golang

Explication détaillée du transfert des matrices Golang

Aujourd'hui, je vais partager avec vous une explication détaillée du transfert des matrices Golang .Je pense que le contenu est assez bon, et j'aimerais le partager avec vous maintenant. Il a une très bonne valeur de référence. Les amis qui en ont besoin peuvent suivre l'éditeur et y jeter un œil

Concept. introduction

Tableaux et tranches

Un tableau est une séquence numérotée de longueur fixe d'éléments de données du même type unique. La longueur du tableau peut atteindre 2 Go et il s’agit d’un type valeur. Une tranche est une référence à un fragment contigu d’un tableau, donc une tranche est un type référence.

Passer par valeur et passer par référence

Il existe deux manières de transmettre les paramètres des fonctions en langage Go, passer par valeur et passer par référence. Go utilise le passage par valeur pour transmettre les paramètres par défaut, c'est-à-dire en transmettant une copie du paramètre. Lorsque la valeur de la copie est modifiée dans la fonction, la variable d'origine ne sera pas affectée.

Le passage par référence peut en fait être appelé "passage par valeur", mais la copie est une copie d'une adresse, à travers laquelle la valeur à l'adresse pointée par cette valeur peut être modifiée.

En langage Go, lors de l'appel de fonctions, les types référence (slice, map, interface, canal) sont passés par référence par défaut.

Inconvénients lors du passage de tableaux

Généralement, passer un pointeur coûte moins cher que passer une copie, surtout lorsque le tableau est particulièrement grand. La raison spécifique est la suivante :

Le transfert de valeur nécessite une copie complète du tableau initial et place cette copie sur la pile, ce qui consommera beaucoup de temps d'exécution, la méthode de transfert de valeur est donc relativement inefficace.

La copie du tableau initial nécessite de l'espace mémoire supplémentaire (mémoire sur la pile)

Le compilateur doit générer spécifiquement une partie du code pour copier le tableau initial, ce qui rendra le programme plus grand.

Comment éviter

Comme introduit ci-dessus, il existe deux méthodes : la première utilise des pointeurs, c'est-à-dire le passage par référence ; les tranches sont des références de type, passées par référence par défaut.

Passer à l'aide de pointeurs

package main
import "fmt"
func main() {
  var arr = [5]int{1, 2, 3, 4, 5}
  fmt.Println(sum(&arr))
}
func sum(arr *[5]int) int {
  s := 0
  for i := 0; i < len(arr); i++ {
    s += arr[i]
  }
  return s
}
Copier après la connexion

Passer à l'aide de tranches

package main
import "fmt"
func main() {
  var arr = [5]int{1, 2, 3, 4, 5}
  fmt.Println(sum(arr[:]))
}
func sum(arr []int) int {
  s := 0
  for i := 0; i < len(arr); i++ {
    s += arr[i]
  }
  return s
}
Copier après la connexion

La dernière méthode est généralement plus courante.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:zzvips.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal