Go学习笔记02| 青训营笔记

97 阅读2分钟

这是我参与「第三届青训营-后端场」笔记创作活动的的第2篇笔记

Go的注意事项

go类型用别名之后就属于新的类型
go指针不能+1取下一个地址
go没有前置++,--(++a是错的)

Go init函数

作用:初始化
init()函数会在每个包完成初始化后自动执行,并且执行优先级比main函数高。init 函数通常被用来:

  • 对变量进行初始化
  • 检查/修复程序的状态
  • 注册
  • 运行一次计算
  • 包的初始化

为了使用导入的包,首先必须将其初始化。初始化总是以单线程执行,并且按照包的依赖关系顺序执行。这通过Golang的运行时系统控制,如下图所示:

image.png

  1. 初始化导入的包(递归导入)
  2. 对包块中声明的变量进行计算和分配初始值
  3. 执行包中的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)
}