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

Что нужно знать о функциях в Golang
Например:
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)
}
Результат:
multiplication: 50
Синтаксис функций в Golang
func function_name(Parameter-list)(Return_type) {
// function body...
}
Декларация функции
В Go функция объявляется с помощью ключевого слова func, за которым следуют имя, параметры и необязательный тип возвращаемого значения.
Синтаксис
func function_name(Parameter-list)(Return_type) {
// function body...
}
Пример функции умножения
func multiply(a, b int) int {
return a * b
}
func: Ключевое слово для объявления функции.
function_name: Имя функции, например умножить.
Список параметров: a, b int — параметры вместе с их типами.
Return_type: int указывает тип возвращаемого значения.
Функция вызова
Чтобы использовать функцию, просто вызовите ее по имени со всеми необходимыми аргументами. Здесь multiply(5, 10) вызывает функцию с 5 и 10 в качестве аргументов.
Например
result := multiply(5, 10)
fmt.Printf("Result of multiplication: %d", result)
Аргументы функции
Go поддерживает два способа передачи параметров функциям: вызов по значению и вызов по ссылке. По умолчанию Go использует вызов по значению, что означает, что значения копируются, а изменения внутри функции не влияют на переменные вызывающей стороны.
Звонок по значению
При вызове по значению значения аргументов копируются в параметры функции, поэтому изменения в функции не влияют на исходные переменные.
Например:
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)
}
Результат:
Before: x = 5, y = 10
multiplication: 100
After: x = 5, y = 10
Звонок по ссылке
При вызове по ссылке используются указатели, благодаря чему изменения внутри функции отражаются в переменных вызывающей стороны.
Например:
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)
}
Результат
Before: x = 5, y = 10
multiplication: 100
After: x = 10, y = 10