В Golang функция — это группа операторов, используемых для выполнения задач, с необязательным возвращаемым значением . Go поддерживает два основных способа передачи аргументов: передача по значению и передача по ссылке. Go по умолчанию использует передачу по значению.

Основные термины при передаче параметров функциям:
- Фактические параметры: Аргументы, передаваемые функции.
- Формальные параметры: параметры, получаемые функцией.
Например
package main
import "fmt"
// Cố gắng sửa đổi giá trị của num
func modify(num int) {
num = 50
}
func main() {
num := 20
fmt.Printf("Before, num = %d\n", num)
modify(num)
fmt.Printf("After, num = %d\n", num)
}
В этом примере num
остается неизменным после вызова , modify
поскольку передается по значению.
Синтаксис
func functionName(param Type) {
// function body # Gọi theo giá trị
}
func functionName(param *Type) {
// function body # Gọi theo tham chiếu
}
Звонок по значению
При вызове по значению передается копия фактического значения параметра. Изменения, внесенные в функцию, не влияют на исходную переменную.
Синтаксис
func functionName(param Type) {
// function body
}
Например:
package main
import "fmt"
// Chỉnh sửa giá trị của num
func modify(num int) {
num = 50
}
func main() {
num := 20
fmt.Printf("Before, num = %d\n", num)
modify(num)
fmt.Printf("After, num = %d\n", num)
}
Результат:
Before, num = 20
After, num = 20
Значение остается прежним, поскольку изменения внутри modify
не влияют на num
внешние main
.
Аргументы функций в Golang
Звонок по ссылке
При вызове по ссылке передается указатель на фактический параметр, поэтому любые изменения внутри функции отражаются на исходной переменной.
Синтаксис
func functionName(param *Type) {
// function body
}
Например:
package main
import "fmt"
// Chỉnh sửa giá trị của num qua tham chiếu
func modify(num *int) {
*num = 50
}
func main() {
num := 20
fmt.Printf("Before, num = %d\n", num)
modify(&num)
fmt.Printf("After, num = %d\n", num)
}
Результат
Before, num = 20
After, num = 50
Поскольку num
он передается по ссылке, команда modify
изменит его значение, что отразится в команде main
.