课程章节:带你重新认识go语言 1~3
课程讲师:Moody
课程内容:
为什么要使用go语言
△直接编译成二进制,不同于java的字节码
△没有类似js那种虚拟化损失
△自带运行环境,无需手动GC回收,由go底层的自动化GC完成
△一次编译,可以适用多平台
△超强并发支持能力和并发易用性
什么是runtime?
语言在运行时的环境支撑。
作为程序的一部分打包到二进制的产物。
随用户本身的程序一起运行,没有界限,用户的程序可以直接通过函数调用runtime包
runtime包本身功能强大,内存管理能力:比如内存分配;垃圾回收能力;超强并发;一系列常用应用:比如string的处理,网络,打印输出,日志等等
runtime也屏蔽了一些底层编译调用,不同的CPU架构,不同的系统在runtime包里有不同的实现,这些无需用户关心,由runtime自己处理
用户使用的一些关键字,比如go,new,make,均是runtime包里的一些函数
go的编译过程
输出编译过程 go build -n
词法分析->句法分析->语义分析->中间码生成->代码优化->机器码生成->link(把*.a文件组合链接为exe文件)
词法分析:把源代码变成token(最小语义结构)
句法分析:把token变成语法树sst
语义分析:推断和检查,逃逸分析
中间码生成:SSA,生成与平台无关的中间码,处理平台差异,设置环境变量GOSSAFUNC 来查看中间码
机器码生成:先生成plan9汇编,然后编译并输出机器码*.a文件
课程收获:
学习了go的一些基础,为后面的学习做准备