functions.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package main
  2. import "fmt"
  3. // обычное объявление
  4. func singleIn(in int) int {
  5. return in
  6. }
  7. // много параметров
  8. func multIn(a, b int, c int) int {
  9. return a + b + c
  10. }
  11. // именованный результат
  12. func namedReturn() (out int) {
  13. out = 2
  14. return
  15. }
  16. // несколько результатов
  17. func multipleReturn(in int) (int, error) {
  18. if in > 2 {
  19. return 0, fmt.Errorf("some error happend")
  20. }
  21. return in, nil
  22. }
  23. // несколько именованных результатов
  24. func multipleNamedReturn(ok bool) (rez int, err error) {
  25. rez = 1
  26. if ok {
  27. err = fmt.Errorf("some error happend")
  28. // аналогично return rez, err
  29. return 3, fmt.Errorf("some error happend")
  30. return
  31. }
  32. rez = 2
  33. return
  34. }
  35. // не фиксированное количество параметров
  36. func sum(in ...int) (result int) {
  37. fmt.Printf("in := %#v \n", in)
  38. for _, val := range in {
  39. result += val
  40. }
  41. return
  42. }
  43. func main() {
  44. // fmt.Println(multipleNamedReturn(false))
  45. // return
  46. nums := []int{1, 2, 3, 4}
  47. fmt.Println(nums, sum(nums...))
  48. return
  49. }