hello.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package main
  2. import (
  3. "fmt"
  4. "math/rand"
  5. ) //引入math/rand标准库包,并以rand作为引入名
  6. const MaxRand = 16 // 声明一个具名整型常量
  7. // 一个函数声明
  8. /* StatRandomNumbers生成一些不大于MaxRand的非负
  9. 随机整数,并统计和返回小于和大于MaxRand/2的随机数
  10. 个数。输入参数numRands指定了要生成的随机数的总数。
  11. */
  12. func StatRandomNumbers(numRands int) (int, int) {
  13. // 声明了两个变量(类型都为int,初始值都为0)
  14. var a, b int
  15. // 一个for循环代码块
  16. for i := 0; i < numRands; i++ {
  17. // 一个if-else条件控制代码块
  18. if rand.Intn(MaxRand) < MaxRand/2 {
  19. a = a + 1
  20. } else {
  21. b++ // 等价于:b = b + 1
  22. }
  23. }
  24. return a, b // 此函数返回两个结果
  25. }
  26. func SquareesofSumAndDiff(a, b int64) (s, d int64) {
  27. // return (a + b) * (a + b), (a - b) * (a - b)
  28. s = (a + b) * (a + b)
  29. d = (a - b) * (a - b)
  30. return
  31. }
  32. // main函数,或主函数,是一个程序的入口函数。
  33. func main() {
  34. {
  35. // part1
  36. // var num = 100
  37. // 调用上面声明的StatRandomNumbers函数,
  38. // 并将结果赋给使用短声明语句声明的两个变量。
  39. // x, y := StatRandomNumbers(num)
  40. // 调用两个内置函数(print和println)。
  41. // print("Result: ", x, " + ", y, " = ", num, "? ")
  42. // println(x+y == num)
  43. // println(reflect.TypeOf("num").Name())
  44. }
  45. {
  46. // 函数声明与调用
  47. // x, y := SquareesofSumAndDiff(1, 2)
  48. // fmt.Printf("%d,%d", x, y)
  49. }
  50. {
  51. // //匿名函数
  52. // x, y := 1, 2
  53. // a, b := func(x, y int) (int, int) {
  54. // x = 4
  55. // print(x + y)
  56. // return x, y
  57. // }(x, y)
  58. // func() {
  59. // println("hello")
  60. // }()
  61. // fmt.Printf("%d,%d", a, b)
  62. // //在函数体后面跟上()表示声明后立即执行
  63. }
  64. {
  65. x, y := "炸", "煎鱼"
  66. fmt.Println(&x)
  67. _, _ = func(x, y string) (s string, err error) {
  68. x = "吃"
  69. fmt.Println(&x)
  70. return x + y, nil
  71. }(x, y)
  72. fmt.Println(&x)
  73. fmt.Println(x, y)
  74. }
  75. }