58 lines
1.5 KiB
Go
58 lines
1.5 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
)
|
|
|
|
// Обявление функции (первая строчка до фигурных скобок - сигнатура функции)
|
|
// line и times - параметры функции
|
|
func repeatLine(line string, times int) {
|
|
for i := 0; i < times; i++ {
|
|
fmt.Println(line)
|
|
}
|
|
}
|
|
|
|
func paintNeeded(width float64, height float64) (float64, error) {
|
|
if width < 0 {
|
|
return 0, fmt.Errorf("A width of %.2f is invalid", width)
|
|
}
|
|
if height < 0 {
|
|
return 0, fmt.Errorf("A height of %.2f is invalid", height)
|
|
}
|
|
area := width * height
|
|
return area / 10.0, nil
|
|
}
|
|
|
|
// Функция возвращающая значение (тип возврата - второй float64) и обязательно return
|
|
func double(num float64) float64 {
|
|
return num * 2
|
|
}
|
|
|
|
// Множественный возврат из функци
|
|
func manyReturns() (int, bool, string) {
|
|
return 1, true, "hello"
|
|
}
|
|
|
|
func main() {
|
|
|
|
// Вызов функции( параметры становятся аргументами функции)
|
|
repeatLine("hello", 4)
|
|
|
|
// paintNeeded(4.2, 3.0)
|
|
// paintNeeded(5.2, 3.5)
|
|
// paintNeeded(5.0, 3.3)
|
|
amount, err := paintNeeded(4.2, -3.0)
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
/* log.Fatal(err) */
|
|
} else {
|
|
fmt.Printf("%.2f liters needed\n", amount)
|
|
}
|
|
|
|
result := double(6.4) // Присвоение значения возврату из функции
|
|
fmt.Print(result, "\n")
|
|
|
|
myNum, myBool, myString := manyReturns()
|
|
fmt.Printf("Num: %d, Bool: %t, String: %s\n", myNum, myBool, myString)
|
|
}
|