English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной учебник Golang

Управляющие инструкции Golang

Функции и методы Golang

Структуры Golang

Срезы и массивы Golang

Строки (String) Golang

Указатели Golang

Интерфейсы Golang

Конкурентоспособность Golang

Ошибки (Error) Golang

Другие аспекты Golang

Функции языка Go

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

Декларация функции

Декларация функции является методом создания структурных функций.

Грамматика:

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 поддерживает два метода передачи параметров в функцию:

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

    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
  2. Через ссылочный вызов:Реальные и формальные параметры указывают на одно и то же место, поэтому любые изменения, произведенные внутри функции, фактически отражаются на реальных параметрах вызывателя.

    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