Maison > développement back-end > Golang > Comment modifier une valeur dans Golang

Comment modifier une valeur dans Golang

PHPz
Libérer: 2023-04-13 18:41:16
original
1023 Les gens l'ont consulté

Golang est un langage de programmation très populaire. Sa syntaxe simple, ses hautes performances et ses fonctionnalités de concurrence le rendent largement utilisé dans les applications Web, la programmation réseau et d'autres domaines. Dans Go, modifier la valeur d'une variable peut ne pas être facile à comprendre. Cet article présentera en détail comment modifier une valeur dans Go.

1. Passage par valeur et passage par référence

Dans Golang, les paramètres de fonction peuvent être passés par valeur ou par référence. Passer par valeur signifie envoyer une copie de la valeur du paramètre à la fonction. Les modifications apportées à la valeur du paramètre dans la fonction n'affecteront pas la valeur en dehors de la fonction. Le passage par référence fait référence au passage de paramètres en tant que pointeurs vers des fonctions, et les modifications apportées aux pointeurs dans la fonction seront reflétées à l'extérieur de la fonction.

L'exemple de code est le suivant :

package main

import "fmt"

func main() {
    var x int = 10
    fmt.Println("before call:", x)
    modifyValue(x)
    fmt.Println("after call:", x)
    modifyPointer(&x)
    fmt.Println("after call:", x)
}

func modifyValue(x int) {
    x = x + 1
    fmt.Println("in func:", x)
}

func modifyPointer(x *int) {
    *x = *x + 1
    fmt.Println("in func:", *x)
}
Copier après la connexion

Ce code définit deux fonctions modifyValue et modifyPointer, une pour modifier la valeur et une pour modifier le pointeur. Dans la fonction main, nous définissons une variable entière x et l'initialisons à 10, puis appelons modifyValue et modifyPointerrespectivement >. modifyValuemodifyPointer,一个用于修改值,一个用于修改指针。在 main 函数中,我们定义一个整型变量 x 并初始化为 10,然后分别调用 modifyValuemodifyPointer

当我们执行此程序,输出结果如下:

before call: 10
in func: 11
after call: 10
in func: 11
after call: 11
Copier après la connexion

观察输出可以发现,当调用 modifyValue 时,虽然函数内修改了参数的值,但是函数外的值并没有改变;当调用 modifyPointer 时,函数内将指针指向的值加了一,函数外的值也相应变成了 11。这就是值传递和引用传递的区别。

2. 如何在 Golang 中修改值

了解了值传递和引用传递的区别,我们就可以开始介绍如何在 Golang 中修改值了。

2.1 数组和切片

在 Golang 中,可以通过索引来访问数组和切片中的元素,并且可以通过索引来修改元素的值。

示例代码如下:

package main

import "fmt"

func main() {
    var arr [3]int = [3]int{1, 2, 3}
    fmt.Println("before modify:", arr)
    arr[1] = 4
    fmt.Println("after modify:", arr)
    
    var slc []int = []int {1, 2, 3}
    fmt.Println("before modify:", slc)
    slc[1] = 4
    fmt.Println("after modify:", slc)
}
Copier après la connexion

这段代码定义了一个长度为 3 的整型数组 arr 和一个整型切片 slc,然后依次对数组和切片中的第二个元素进行修改。

当我们执行此程序,输出结果如下:

before modify: [1 2 3]
after modify: [1 4 3]
before modify: [1 2 3]
after modify: [1 4 3]
Copier après la connexion

2.2 Map

在 Golang 中,Map 是一种键值对结构,可以通过键名对 Map 中的值进行访问和修改。

示例代码如下:

package main

import "fmt"

func main() {
    var m map[string]int = map[string]int{"apple": 1, "banana": 2, "orange": 3}
    fmt.Println("before modify:", m)
    m["banana"] = 4
    fmt.Println("after modify:", m)
}
Copier après la connexion

这段代码定义了一个字符串到整型的 Map,然后通过键名修改 Map 中的值。

当我们执行此程序,输出结果如下:

before modify: map[apple:1 banana:2 orange:3]
after modify: map[apple:1 banana:4 orange:3]
Copier après la connexion

2.3 Struct

在 Golang 中,结构体是一种用户自定义的复合类型,可以定义结构体成员并通过点语法来访问和修改结构体成员的值。

示例代码如下:

package main

import "fmt"

type Person struct {
    Name string
    Age int
}

func main() {
    var p Person = Person{"Tom", 20}
    fmt.Println("before modify:", p)
    p.Age = 21
    fmt.Println("after modify:", p)
}
Copier après la connexion

这段代码定义了一个名为 Person 的结构体类型,其中包含一个字符串类型的成员 Name 和一个整型类型的成员 Age,然后定义了一个名为 p

Lorsque nous exécutons ce programme, le résultat de sortie est le suivant :

before modify: {Tom 20}
after modify: {Tom 21}
Copier après la connexion
En observant la sortie, nous pouvons constater que lorsque modifyValue est appelé, bien que la valeur du paramètre soit modifiée dans la fonction, la valeur en dehors de la fonction ne change pas ; lorsque modifyPointer est appelé, la valeur pointée par le pointeur est augmentée de un dans la fonction, et la valeur en dehors de la fonction devient également 11 en conséquence. C'est la différence entre le passage par valeur et le passage par référence.

2. Comment modifier les valeurs dans Golang

Comprenant la différence entre le passage de valeur et le passage de référence, nous pouvons commencer à présenter comment modifier les valeurs dans Golang. 🎜

2.1 Tableaux et tranches

🎜Dans Golang, les éléments des tableaux et des tranches sont accessibles via des index, et les valeurs des éléments peuvent être modifiées via des index. 🎜🎜L'exemple de code est le suivant : 🎜rrreee🎜Ce code définit un tableau d'entiers arr d'une longueur de 3 et une tranche entière slc, puis trie le tableau et slice en séquence Modifier le deuxième élément dans . 🎜🎜Lorsque nous exécutons ce programme, le résultat est le suivant : 🎜rrreee

2.2 Map

🎜Dans Golang, Map est une structure de paire clé-valeur, et les valeurs de la Map sont accessibles et modifié par les noms de clés. 🎜🎜L'exemple de code est le suivant : 🎜rrreee🎜Ce code définit une carte de la chaîne à l'entier, puis modifie la valeur dans la carte via le nom de la clé. 🎜🎜Lorsque nous exécutons ce programme, le résultat est le suivant : 🎜rrreee

2.3 Struct

🎜Dans Golang, la structure est un type composite défini par l'utilisateur et les membres de la structure peuvent être définis via la syntaxe par points. Accédez et modifiez les valeurs des membres de la structure. 🎜🎜L'exemple de code est le suivant : 🎜rrreee🎜Ce code définit un type de structure nommé Person, qui contient un membre de type chaîne Nom et un membre de type entier Age, définit ensuite une variable de structure nommée p et lui attribue une valeur initiale, et enfin modifie la valeur du membre de la structure. 🎜🎜Lorsque nous exécutons ce programme, le résultat est le suivant : 🎜rrreee🎜3Résumé🎜🎜Les variables dans Golang peuvent être divisées en types de base et types composites. Les types de base ne peuvent pas être modifiés directement, tandis que les valeurs des types composites peuvent être modifiées via des index, des noms de clé et une syntaxe par points. Dans Golang, le passage de paramètres peut être effectué de deux manières : le passage de valeurs et le passage de références. Vous devez décider quelle méthode utiliser en fonction des besoins réels. Dans le cas d'un transfert de valeur, la valeur en dehors de la fonction ne peut pas être directement modifiée et doit être obtenue en passant un pointeur. 🎜

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!

source:php.cn
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