Учебники

Go — Функции

Функция — это группа операторов, которые вместе выполняют задачу. Каждая программа Go имеет хотя бы одну функцию — main () . Вы можете разделить свой код на отдельные функции. Как вы делите свой код между различными функциями, зависит от вас, но логически разделение должно быть таким, чтобы каждая функция выполняла определенную задачу.

Объявление функции сообщает компилятору об имени функции, типе возвращаемого значения и параметрах. Определение функции обеспечивает фактическое тело функции.

Стандартная библиотека Go предоставляет множество встроенных функций, которые может вызывать ваша программа. Например, функция len () принимает аргументы различных типов и возвращает длину типа. Если ей передается строка, функция возвращает длину строки в байтах. Если ему передан массив, функция возвращает длину массива.

Функции также известны как метод, подпрограмма или процедура .

Определение функции

Общая форма определения функции в языке программирования Go выглядит следующим образом:

func function_name( [parameter list] ) [return_types]
{
   body of the function
}

Определение функции в языке программирования Go состоит из заголовка функции и тела функции . Вот все части функции —

  • Func — запускает объявление функции.

  • Имя функции — это фактическое имя функции. Имя функции и список параметров вместе составляют сигнатуру функции.

  • Параметры — параметр похож на заполнитель. Когда вызывается функция, вы передаете значение параметру. Это значение называется фактическим параметром или аргументом. Список параметров относится к типу, порядку и количеству параметров функции. Параметры являются необязательными; то есть функция может не содержать параметров.

  • Тип возврата — функция может возвращать список значений. Return_types — это список типов данных значений, которые возвращает функция. Некоторые функции выполняют нужные операции без возврата значения. В этом случае return_type не является обязательным.

  • Тело функции — содержит набор операторов, которые определяют, что делает функция.

Func — запускает объявление функции.

Имя функции — это фактическое имя функции. Имя функции и список параметров вместе составляют сигнатуру функции.

Параметры — параметр похож на заполнитель. Когда вызывается функция, вы передаете значение параметру. Это значение называется фактическим параметром или аргументом. Список параметров относится к типу, порядку и количеству параметров функции. Параметры являются необязательными; то есть функция может не содержать параметров.

Тип возврата — функция может возвращать список значений. Return_types — это список типов данных значений, которые возвращает функция. Некоторые функции выполняют нужные операции без возврата значения. В этом случае return_type не является обязательным.

Тело функции — содержит набор операторов, которые определяют, что делает функция.

пример

Следующий исходный код показывает функцию с именем max () . Эта функция принимает два параметра num1 и num2 и возвращает максимум между двумя —

/* function returning the max between two numbers */
func max(num1, num2 int) int {
   /* local variable declaration */
   result int

   if (num1 > num2) {
      result = num1
   } else {
      result = num2
   }
   return result 
}

Вызов функции

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

Когда программа вызывает функцию, управление программой передается вызываемой функции. Вызываемая функция выполняет определенную задачу, и когда выполняется ее оператор return или когда достигается закрывающая фигурная скобка, завершающая функцию, она возвращает управление программой обратно в основную программу.

Чтобы вызвать функцию, вам просто нужно передать необходимые параметры вместе с именем функции. Если функция возвращает значение, вы можете сохранить возвращенное значение. Например —

Live Demo

package main

import "fmt"

func main() {
   /* local variable definition */
   var a int = 100
   var b int = 200
   var ret int

   /* calling a function to get max value */
   ret = max(a, b)

   fmt.Printf( "Max value is : %d\n", ret )
}

/* function returning the max between two numbers */
func max(num1, num2 int) int {
   /* local variable declaration */
   var result int

   if (num1 > num2) {
      result = num1
   } else {
      result = num2
   }
   return result 
}

Мы сохранили функцию max () вместе с функцией main () и скомпилировали исходный код. Запустив финальный исполняемый файл, он даст следующий результат:

Max value is : 200

Возврат нескольких значений из функции

Функция Go может возвращать несколько значений. Например —

Live Demo

package main

import "fmt"

func swap(x, y string) (string, string) {
   return y, x
}
func main() {
   a, b := swap("Mahesh", "Kumar")
   fmt.Println(a, b)
}

Когда приведенный выше код компилируется и выполняется, он дает следующий результат —

Kumar Mahesh

Аргументы функции

Если функция должна использовать аргументы, она должна объявлять переменные, которые принимают значения аргументов. Эти переменные называются формальными параметрами функции.

Формальные параметры ведут себя как другие локальные переменные внутри функции и создаются при входе в функцию и уничтожаются при выходе.

При вызове функции существует два способа передачи аргументов в функцию:

Sr.No Тип звонка и описание
1 Звонок по значению

Этот метод копирует фактическое значение аргумента в формальный параметр функции. В этом случае изменения, внесенные в параметр внутри функции, не влияют на аргумент.

2 Звоните по ссылке

Этот метод копирует адрес аргумента в формальный параметр. Внутри функции адрес используется для доступа к фактическому аргументу, используемому в вызове. Это означает, что изменения, внесенные в параметр, влияют на аргумент.

Этот метод копирует фактическое значение аргумента в формальный параметр функции. В этом случае изменения, внесенные в параметр внутри функции, не влияют на аргумент.

Этот метод копирует адрес аргумента в формальный параметр. Внутри функции адрес используется для доступа к фактическому аргументу, используемому в вызове. Это означает, что изменения, внесенные в параметр, влияют на аргумент.

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

Использование функции

Функцию можно использовать следующими способами:

Функции могут быть созданы на лету и могут быть использованы в качестве значений.

Закрытия функций являются анонимными функциями и могут использоваться в динамическом программировании.

Методы — это специальные функции с приемником.