func.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package main
  2. import (
  3. "errors"
  4. "fmt"
  5. "log"
  6. "math"
  7. )
  8. func manyReturns() (int, bool, string) {
  9. return 1, true, "hello"
  10. // usage
  11. // myInt, myBool, myString := manyReturns()
  12. }
  13. func floatParts(number float64) (integerPart int, fractionalPart float64) {
  14. wholeNumber := math.Floor(number)
  15. return int(wholeNumber), number - wholeNumber
  16. }
  17. func test_err() {
  18. // err := errors.New("height can't be negative")
  19. err := fmt.Errorf("a height of %0.2f is invalid", -2.3333)
  20. fmt.Println(err)
  21. log.Fatal(err)
  22. }
  23. func divide(dividend float64, divisor float64) (float64, error) {
  24. if divisor == 0.0 {
  25. return 0, errors.New("can't divide by 0")
  26. }
  27. return dividend / divisor, nil
  28. }
  29. func paintNeeded(width float64, height float64) (float64, error) {
  30. if width < 0 {
  31. return 0, fmt.Errorf("a width of %0.2f is invalid", width)
  32. }
  33. if height < 0 {
  34. return 0, fmt.Errorf("a height of %0.2f id invalid", height)
  35. }
  36. area := width * height
  37. return area / 10, nil
  38. }
  39. func main() {
  40. quotient, err := divide(5.6, 0.0)
  41. if err != nil {
  42. fmt.Println(err)
  43. } else {
  44. fmt.Printf("%0.2f\n", quotient)
  45. }
  46. /*
  47. var amount float64
  48. amount, err := paintNeeded(4.2, 3.0)
  49. if err != nil {
  50. log.Fatal(err)
  51. } else {
  52. fmt.Printf("%0.2f liters needed\n", amount)
  53. }
  54. */
  55. }