package main import ( "fmt" "math/rand" ) //引入math/rand标准库包,并以rand作为引入名 const MaxRand = 16 // 声明一个具名整型常量 // 一个函数声明 /* StatRandomNumbers生成一些不大于MaxRand的非负 随机整数,并统计和返回小于和大于MaxRand/2的随机数 个数。输入参数numRands指定了要生成的随机数的总数。 */ func StatRandomNumbers(numRands int) (int, int) { // 声明了两个变量(类型都为int,初始值都为0) var a, b int // 一个for循环代码块 for i := 0; i < numRands; i++ { // 一个if-else条件控制代码块 if rand.Intn(MaxRand) < MaxRand/2 { a = a + 1 } else { b++ // 等价于:b = b + 1 } } return a, b // 此函数返回两个结果 } func SquareesofSumAndDiff(a, b int64) (s, d int64) { // return (a + b) * (a + b), (a - b) * (a - b) s = (a + b) * (a + b) d = (a - b) * (a - b) return } // main函数,或主函数,是一个程序的入口函数。 func main() { { // part1 // var num = 100 // 调用上面声明的StatRandomNumbers函数, // 并将结果赋给使用短声明语句声明的两个变量。 // x, y := StatRandomNumbers(num) // 调用两个内置函数(print和println)。 // print("Result: ", x, " + ", y, " = ", num, "? ") // println(x+y == num) // println(reflect.TypeOf("num").Name()) } { // 函数声明与调用 // x, y := SquareesofSumAndDiff(1, 2) // fmt.Printf("%d,%d", x, y) } { // //匿名函数 // x, y := 1, 2 // a, b := func(x, y int) (int, int) { // x = 4 // print(x + y) // return x, y // }(x, y) // func() { // println("hello") // }() // fmt.Printf("%d,%d", a, b) // //在函数体后面跟上()表示声明后立即执行 } { x, y := "炸", "煎鱼" fmt.Println(&x) _, _ = func(x, y string) (s string, err error) { x = "吃" fmt.Println(&x) return x + y, nil }(x, y) fmt.Println(&x) fmt.Println(x, y) } }