En Go, las funciones son bloques de código que realizan tareas específicas y que pueden reutilizarse en todo el programa para ahorrar memoria, mejorar la legibilidad y ahorrar tiempo. Las funciones de Golang pueden o no devolver un valor al llamador.

Cosas que debes saber sobre las funciones en Golang
Por ejemplo:
package main
import "fmt"
// multiply() nhân 2 số nguyên và trả về kết quả
func multiply(a, b int) int {
return a * b
}
func main() {
result := multiply(5, 10)
fmt.Printf("multiplication: %d", result)
}
Resultado:
multiplication: 50
Sintaxis de funciones en Golang
func function_name(Parameter-list)(Return_type) {
// function body...
}
Declaración de función
En Go, una función se declara con la palabra clave func, seguida de un nombre, parámetros y un tipo de retorno opcional.
Sintaxis
func function_name(Parameter-list)(Return_type) {
// function body...
}
Ejemplo de función de multiplicación
func multiply(a, b int) int {
return a * b
}
func: Palabra clave para declarar una función.
function_name: El nombre de la función, p. ej. multiplicar.
Lista de parámetros: a, b int—los parámetros junto con sus tipos.
Return_type: int especifica el tipo de retorno.
Función de llamada
Para utilizar una función, simplemente llame a la función por su nombre con los argumentos necesarios. Aquí, multiply(5, 10) llama a la función con 5 y 10 como argumentos.
Por ejemplo
result := multiply(5, 10)
fmt.Printf("Result of multiplication: %d", result)
Argumentos de función
Go admite dos formas de pasar parámetros a funciones: llamada por valor y llamada por referencia. De forma predeterminada, Go utiliza llamada por valor, lo que significa que los valores se copian y los cambios dentro de la función no afectan las variables del llamador.
Llamada por valor
En la llamada por valor, los valores de los argumentos se copian en los parámetros de la función, por lo que los cambios en la función no afectan a las variables originales.
Por ejemplo:
package main
import "fmt"
func multiply(a, b int) int {
a = a * 2 // chỉnh sửa bên trong hàm này
return a * b
}
func main() {
x := 5
y := 10
fmt.Printf("Before: x = %d, y = %d\n", x, y)
result := multiply(x, y)
fmt.Printf("multiplication: %d\n", result)
fmt.Printf("After: x = %d, y = %d\n", x, y)
}
Resultado:
Before: x = 5, y = 10
multiplication: 100
After: x = 5, y = 10
Llamar por referencia
En la llamada por referencia, se utilizan punteros para que los cambios dentro de la función se reflejen en las variables del llamador.
Por ejemplo:
package main
import "fmt"
func multiply(a, b *int) int {
*a = *a * 2 // chỉnh sửa giá trị của a ở địa chỉ bộ nhớ của nó
return *a * *b
}
func main() {
x := 5
y := 10
fmt.Printf("Before: x = %d, y = %d\n", x, y)
result := multiply(&x, &y)
fmt.Printf("multiplication: %d\n", result)
fmt.Printf("After: x = %d, y = %d\n", x, y)
}
Resultado
Before: x = 5, y = 10
multiplication: 100
After: x = 10, y = 10