English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Функция обычно представляет собой код или блок инструкций в программе, который позволяет пользователям повторно использовать один и тот же код, что в конечном итоге позволяет экономить память, время, а также, что наиболее важно, обеспечивает лучшую читаемость кода. Таким образом, функция является集合ом инструкций, которые выполняют определенные задачи и возвращают результат вызовщику. Функция также может выполнять определенные задачи, не возвращая никакого содержимого.
Декларация функции является методом создания структурных функций.
Грамматика:
func function_name(Parameter_list)(Return_type){ // function body..... }
Декларация этой функции включает:
func:Это ключевое слово языка Go, используемое для создания функций.
function_name:ЭтоФункцияимя.
Parameter_list:Содержит имя и тип параметра функции.
Return_type:Это опционально, оно содержит тип значения, возвращаемого функцией. Если в функции используется return_type, то в функции также должен использоваться оператор return.
Вызов функции выполняется, когда пользователь хочет выполнить функцию. Нужен вызов функции, чтобы использовать её возможности. Как показано в следующем примере, у нас есть функция add(), которая имеет два параметра. Теперь мы вызываем эту функцию в главном блоке с помощью её имени, то есть area(12, 10), имеющей два параметра.
package main import "fmt" // area() используется для поиска площади прямоугольника // два параметра функции, то есть длина и ширина func area(length, width int) int { Ar := length * width return Ar } func main() { // показать площадь прямоугольника // через метод вызова fmt.Printf("Площадь прямоугольника: %d", area(12, 10)) }
Вывод:
Площадь прямоугольника: 120
В языке Go параметры, передаваемые в функцию, называются реальными параметрами (реальными аргументами), а параметры, принимаемые функцией, называются формальными параметрами (формальными аргументами).
Примечание:По умолчанию, язык Go использует метод передачи по значению для передачи параметров в функцию.
Язык Go поддерживает два метода передачи параметров в функцию:
Вызов по значениюВ этом методе передачи параметров значение реального параметра копируется в формальный параметр функции, и оба типа параметров хранятся в разных местах памяти. Поэтому любые изменения, произведенные внутри функции, не отражаются на реальных параметрах вызывателя.
package main import "fmt" // функция для обмена значений func swap(a, b int) int { var o int o = a a = b b = o return o } func main() { var p int = 10 var q int = 20 fmt.Printf("p = %d и q = %d", p, q) // вызов по значению swap(p, q) fmt.Printf("\np = %d и q = %d", p, q) }
Вывод:
p = 10 и q = 20 p = 10 и q = 20
Через ссылочный вызов:Реальные и формальные параметры указывают на одно и то же место, поэтому любые изменения, произведенные внутри функции, фактически отражаются на реальных параметрах вызывателя.
package main import "fmt" // функция для обмена значений func swap(a, b *int) int { var o int o = *a *a = *b *b = o return o } func main() { var p int = 10 var q int = 20 fmt.Printf("p = %d и q = %d", p, q) // ссылочный вызов swap(&p, &q) fmt.Printf("\np = %d и q = %d", p, q) }
Вывод:
p = 10 и q = 20 p = 20 и q = 10