Передача по значению в функциях языка Go
Передача означает копирование фактических параметров и их передачу в функцию при вызове, так что если параметры изменяются внутри функции, это не повлияет на фактические параметры.
По умолчанию Go использует передачу по значению, что означает, что фактические параметры не изменяются во время вызова.
Далее определяется функция swap():
/* 定义相互交换值的函数 */
func swap(x, y int) int {
var temp int
temp = x /* 保存 x 的值 */
x = y /* 将 y 值赋给 x */
y = temp /* 将 temp 值赋给 y*/
return temp;
}
Теперь давайте используем передачу по значению, чтобы вызвать функцию swap():
Пример
package main
import "fmt"
func main() {
/* Определить локальные переменные */
var a int = 100
var b int = 200
fmt.Printf("Перед swap значение a : %d\n", a )
fmt.Printf("Перед swap значение b : %d\n", b )
/* Обмен значениями путём вызова функции */
swap(a, b)
fmt.Printf("Значение a после swap : %d\n\n", a )
fmt.Printf("Значение b после swap : %d\n\n", b )
}
/* Определить функцию, которая меняет значения */
func swap(x, y int) int {
var temp int
temp = x /* Сохранить значение x */
x = y /* Присвоить значение y переменной x */
y = temp /* Присвоить значение temp переменной y */
return temp;
}
import "fmt"
func main() {
/* Определить локальные переменные */
var a int = 100
var b int = 200
fmt.Printf("Перед swap значение a : %d\n", a )
fmt.Printf("Перед swap значение b : %d\n", b )
/* Обмен значениями путём вызова функции */
swap(a, b)
fmt.Printf("Значение a после swap : %d\n\n", a )
fmt.Printf("Значение b после swap : %d\n\n", b )
}
/* Определить функцию, которая меняет значения */
func swap(x, y int) int {
var temp int
temp = x /* Сохранить значение x */
x = y /* Присвоить значение y переменной x */
y = temp /* Присвоить значение temp переменной y */
return temp;
}
Результат выполнения следующего кода:
交换前 a 的值为 : 100 交换前 b 的值为 : 200 交换后 a 的值 : 100 交换后 b 的值 : 200
Программа использует передачу по значению, поэтому два значения не взаимодействовали. Мы можем использоватьпередачу по ссылкедля достижения эффекта обмена.
Другие расширения