Em Golang , uma função é um grupo de instruções usadas para executar tarefas, com um valor de retorno opcional . Go suporta duas maneiras principais de passar argumentos: Passagem por valor e Passagem por referência. Go usa passagem por valor por padrão.

Termos básicos na passagem de parâmetros para funções:
- Parâmetros reais: Os argumentos passados para a função.
- Parâmetros formais: Os parâmetros recebidos pela função.
Por exemplo
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)
}
Neste exemplo, numpermanece inalterado após a chamada modifyporque é passado por valor.
Sintaxe
func functionName(param Type) {
// function body # Gọi theo giá trị
}
func functionName(param *Type) {
// function body # Gọi theo tham chiếu
}
Chamada por valor
Na chamada por valor, uma cópia do valor real do parâmetro é passada. Alterações feitas na função não afetam a variável original.
Sintaxe
func functionName(param Type) {
// function body
}
Por exemplo:
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)
}
Resultado:
Before, num = 20
After, num = 20
O valor permanece o mesmo, pois as alterações internas modifynão afetam numo exterior main.
Argumentos de função em Golang
Ligue por referência
Na chamada por referência, um ponteiro para o parâmetro real é passado, de modo que quaisquer alterações dentro da função são refletidas na variável original.
Sintaxe
func functionName(param *Type) {
// function body
}
Por exemplo:
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)
}
Resultado
Before, num = 20
After, num = 50
Como numele é passado por referência, o comando modifymudará seu valor, o que é refletido no comando main.