Функции в GO

Прежде чем мы начнем, вот несколько советов о функциях в GO:

  • Каждая программа, написанная на GO, должна иметь функцию с именем main, которая будет точкой входа в ваше приложение. Эта конкретная функция не получает аргументов и ничего не может вернуть.
  • При определении функции вы должны указать аргументы, их типы и возвращаемый тип функции. Если тип возврата не указан, GO будет считать, что функция ничего не вернет. Вы столкнетесь с ошибками, если попытаетесь вернуть что-либо внутри таких функций или присвоить их возвращаемое значение переменной или чему-то еще.
  • Функции в GO могут возвращать не одно и не два, а столько значений, сколько вы хотите. Вы можете вернуть int и float из одной функции одновременно и получить их в разных переменных.

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

Что ж, синтаксис очень прост:

func myFunctionName(argumentName1 argumentType1, argumentName2 argumentType2, ...) (returnType1, returnType2, ...) {
  // the body
}

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

Примечание. Если возвращается одно единственное значение, не следует заключать его в круглые скобки.

Вот пример кода:

package main

import "fmt"

// main function is required. It's a function with no arguments and no return values.
func main() {
	// When there are multiple return values you can get them all out like this
	myX, myY, myLength := dig(1.32, 23.543, 12)

	fmt.Printf("Digged a hole at x=%v y=%v with length of %v meters!\n", myX, myY, myLength)

	sayHi("Gopher")
}

// A function with 3 arguments and 3 return values
func dig(x float64, y float64, length float64) (float64, float64, float64) {
	return x, y, length
}

// A function with one argument and no return values
func sayHi(name string) {
	fmt.Printf("Hi %v!", name)
}

Результат должен быть следующим:

Digged a hole at x=1.32 y=23.543 with length of 12 meters!
Hi Gopher!

Здесь важно отметить, что вы не сможете захватить возвращаемое значение функций внутри констант. Вы можете получить их только внутри переменных. 

Ответить