Go
  • Введение
  • Основы
  • Массивы
  • Считывание данных
  • Словари
  • Функции
  • Структуры и методы
  • Ошибки
  • JSON
  • Динамические массивы
  • Сортировка записей
Powered by GitBook
On this page
  • Простые функции
  • Возврат нескольких значений
  • Передача массива в функцию
  • Процедурный тип параметров
  • Использование рекурсии
  • Использование глобальных переменных
  • Использование указателей
  • Передача массива в функцию через структуру

Was this helpful?

Функции

Простые функции

Создадим функцию для расчёта суммы целых чисел на отрезке.

func getNumbersSum(a int, b int) int {
    var s int
    s = 0
    for i := a; i <= b; i++ {
        s += i
    }
    return s
}

Вызываем функцию.

x := getNumbersSum(4, 8)
fmt.Println(x)

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

Создадим функцию, которая рассчитывает остаток от деление, частное и сумму двух целых чисел.

func countModDivSum(a int, b int) (int, int, int) {
    modValue := a % b
    divValue := a / b
    sumValue := a + b
    return modValue, divValue, sumValue
}

Вызываем функцию.

x, y, z := countModDivSum(15, 6)
fmt.Println(x, y, z)

Передача массива в функцию

Напишем функцию для увеличения всех элементов массива в 2 раза.

func changeArrayElements(mass [5] int)  [5] int {
    for i := 0; i < len(mass); i++ {
        mass[i] = mass[i] * 2
    }
    return mass
}

Создаём массив и инициализируем его элементы.

var arr[5] int

arr[0] = 10
arr[1] = 20
arr[2] = 30
arr[3] = 40
arr[4] = 50

Вызываем функцию.

arr = changeArrayElements(arr)

Процедурный тип параметров

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

func getPlus(a int, b int) int {
    plus := a + b
    return plus
}

func getMinus(a int, b int) int {
    minus := a - b
    return minus
}

Создадим функцию для работы с процедурным типом параметра.

func printResult(x int, y int, f func(aa int, bb int) int) {
    fmt.Println("X:", x)
    fmt.Println("Y:", y)
    ans := f(x, y)
    fmt.Println("Answer:", ans)
}

Вызываем функцию.

printResult(2, 3, getPlus)
printResult(15, 18, getMinus)

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

Напишем рекурсивную функцию для вывода целых чисел на отрезке.

func writeNumbers(a int, b int)  {
    if a > b {
        return
    }
    fmt.Println(a)
    writeNumbers(a + 1, b)
}

Вызываем функцию.

writeNumbers(3, 7)

Использование глобальных переменных

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

package main

import "fmt"

var a int
var b int

func incA() {
    a++
}

func incB() {
    b++
}

func main() {
    a = 100
    b = 100

    incA()
    incA()
    incA()
    incA()

    incB()
    incB()

    fmt.Println("A:", a)
    fmt.Println("B:", b)
}

Использование указателей

Напишем процедуру для расчёта суммы чисел.

func getSum(a int, b int, ans * int) {
    *ans = a + b
}

Вызываем созданную процедуру.

var x int
x = 100
getSum(2, 3, &x)
fmt.Println(x)

Передача массива в функцию через структуру

Опишем структуру.

type ArrStructure struct {
    arr [5] int
}

Напишем функцию для инициализации элементов массива.

func setElements(s * ArrStructure, x int) {
    for i := 0; i < len(s.arr); i++ {
        s.arr[i] = x
    }
}

Вызываем написанную функцию.

var a ArrStructure
setElements(&a, 10)
fmt.Println(a.arr)
setElements(&a, 17)
fmt.Println(a.arr)
PreviousСловариNextСтруктуры и методы

Last updated 5 years ago

Was this helpful?