这是我参与「第三届青训营-后端场」笔记创作活动的的第2篇笔记
Go的注意事项
go类型用别名之后就属于新的类型。
go指针不能+1取下一个地址。
go没有前置++,--(++a是错的)
Go init函数
作用:初始化
init()函数会在每个包完成初始化后自动执行,并且执行优先级比main函数高。init 函数通常被用来:
- 对变量进行初始化
- 检查/修复程序的状态
- 注册
- 运行一次计算
- 包的初始化
为了使用导入的包,首先必须将其初始化。初始化总是以单线程执行,并且按照包的依赖关系顺序执行。这通过Golang的运行时系统控制,如下图所示:
- 初始化导入的包(递归导入)
- 对包块中声明的变量进行计算和分配初始值
- 执行包中的init函数
GO Println函数
作用:输出
packet:"fmt"
Println :可以打印出字符串,和变量
Printf : 只可以打印出格式化的字符串,可以输出字符串类型的变量,不可以输出整形变量和整形
一般来说,println比较常用,因为println自动换行,空格,输出格式上比较友好,但无法格式化输出
package main
import (
"fmt"
)
func main() {
fmt.Println("hello")
fmt.Println("hello", "hello")
//hello
//hello hello
fmt.Print("world")
fmt.Print("world", "world")
//worldworldworld
}
Go rand函数
作用:生成随机数
packet: "math/rand"
rand.Intn () 函数是个伪随机函数(伪随机数是用确定性的算法计算出来自[0,1]均匀分布的随机数序列。并不真正的随机,模拟中使用的一般是循环周期极长并能通过随机数检验的伪随机数,以保证计算结果的随机性。),为了安全性,所以必须调用 rand.Seed (), 并且传入一个变化的值作为参数,如 time.Now().UnixNano() , 就是可以生成时刻变化的值
rand.Intn(maxNum)生成[0, MaxNum)左闭右开区间的数,例如:rand.Intn(100)范围为0-99
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
maxNum := 100
rand.Seed(time.Now().UnixNano())
secretNumber := rand.Intn(maxNum) //maxNum设置最大值
fmt.Println("The secret number is ", secretNumber)
}