1 | package main |
$ go tool compile -m pro_2.go
打印出编译器逃逸分析的过程,使用 -m 参数。
$ go tool compile -S pro_2.go > pro_2.S
go tool compile -S pro_2.go用于反编译代码为汇编代码,这里后面使用pro_2.S表示输出到pro_2.S文件中
Golang中一个函数内局部变量,不管是不是动态new出来的,它会被分配在堆还是栈,是由编译器做逃逸分析之后做出的决定。
note info 经常有面试官甩出个const以及iota的面试题
如下便是国内某公司的面试题:
回答输出结果
1 | package main |
进行几点总结
_
并不是一个空行,它是一个省略了标识符也省略了表达式的常量定义,这一点你需要清楚,不要大意。j = iota
,但此时iota的值会为21 | const ( |
1 | const ( |
os.Args获取输入的命令行参数
具体实现
1 | package main |
具体步骤
-
后面紧跟的字符作为keyflag.Parse()
之后,我们上面的设置的解析参数才会生效到时候执行如下代码的时候,我们需要先使用go build
指令进行编译,编译之后运行可执行文件的时候后面还得加上参数,这里我们应该加上./demo -h 10.26.166.14 -p 3309 -o false
如果不指定参数的时候我们将会使用程序中设置的默认值来读取
具体的序列化
注意:使用Unmarshal()的时候,第2个参数,直接传声明的变量进去即可,因为Golang会自动帮我们分配内存和赋值
例如传入一个只声明的map或结构体
十一无聊,想着看几部电影来happy一下,不知道有什么精彩电影,于是就爬取一下豆瓣的Top250
项目已经开源到了网站
实现步骤