Вариативные функции в Go

GolangGolangBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL go(("Golang")) -.-> go/FunctionsandControlFlowGroup(["Functions and Control Flow"]) go/FunctionsandControlFlowGroup -.-> go/functions("Functions") subgraph Lab Skills go/functions -.-> lab-15528{{"Вариативные функции в Go"}} end

Вариативные функции

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

  • Функция max должна принимать произвольное количество целых чисел в качестве аргументов.
  • Функция max должна возвращать максимальное значение из целых чисел, переданных в качестве аргументов.
$ go run variadic-functions.go
[1 2] 3
[1 2 3] 6
[1 2 3 4] 10

## Другой важный аспект функций в Go - это их способность
## образовывать замыкания, о которых мы поговорим далее.

Ниже представлен полный код:

// [_Variadic functions_](https://en.wikipedia.org/wiki/Variadic_function)
// могут быть вызваны с любым количеством конечных аргументов.
// Например, `fmt.Println` - это распространенная вариативная
// функция.

package main

import "fmt"

// Вот функция, которая будет принимать произвольное количество
// `int` в качестве аргументов.
func sum(nums...int) {
	fmt.Print(nums, " ")
	total := 0
	// Внутри функции тип `nums` эквивалентен `[]int`.
	// Мы можем вызвать `len(nums)`, перебирать его с помощью `range`, и т.д.
	for _, num := range nums {
		total += num
	}
	fmt.Println(total)
}

func main() {

	// Вариативные функции можно вызывать обычным способом
	// с отдельными аргументами.
	sum(1, 2)
	sum(1, 2, 3)

	// Если у вас уже есть несколько аргументов в слайсе,
	// примените их к вариативной функции с помощью
	// `func(slice...)` так.
	nums := []int{1, 2, 3, 4}
	sum(nums...)
}

Резюме

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