Go 语言入门指南:基础语法和常用特性解析
写在前面:
在上一篇笔记中,已经大概写了Go语言常见的基础语法,这篇中就打算大概讲一下Go语言的常用特性吧。 本文主要选自于Go语言特性:(c.biancheng.net/view/3990.h…)
1、并发支持
Go语言从根本上将一切都并发化,运行时用 Goroutine 运行所有的一切,包括 main 入口函数,通过go关键字便可以轻松启动一个新的goroutine。
func printNumbers() {
for i := 1; i <= 5; i++ {
fmt.Println(i)
}
}
func main() {
go printNumbers() // 启动一个goroutine
time.Sleep(time.Second) // 主goroutine休眠一秒,确保足够时间执行printNumbers
}
2、内存分配
Go选择了tcmalloc,本身就是为并发而设计的高性能内存分配组件。刨去因配合垃圾回收器而修改的内容,内存分配器完整保留了 tcmalloc 的原始架构。使用 cache 为当前执行线程提供无锁分配,多个 central 在不同线程间平衡内存单元复用。在更高层次里,heap 则管理着大块内存,用以切分成不同等级的复用内存块。快速分配和二级内存平衡机制,让内存分配器能优秀地完成高压力下的内存管理任务。
3、垃圾回收
Go具有内置的垃圾回收器,它会自动管理内存分配和释放。开发者无需手动处理内存,可以专注于业务逻辑。即不需要显式地释放内存。
func example() {
data := make([]int, 1000) // 创建一个切片,自动由垃圾回收器释放
// do something with data
}
4、静态链接
Go是一种静态类型语言,变量在声明时必须指定类型,并且类型在编译时是确定的。随后的赋值操作必须符合类型规定。
var x int // 声明一个整数类型的变量
x = 20 // 赋值操作,必须符合规定
5、标准库
功能完善、质量可靠的标准库为编程语言提供了充足动力。在不借助第三方扩展的情况下,就可完成大部分基础功能开发,这大大降低了学习和使用成本。最关键的是,标准库有升级和修复保障,还能从运行时获得深层次优化的便利,这是第三方库所不具备的。
Go 标准库虽称不得完全覆盖,但也算极为丰富,其中值得称道的是 net/http,仅须简单几条语句就能实现一个高性能 Web Server。
6、工具链
完整的工具链对于日常开发极为重要。无论是编译、格式化、错误检查、帮助文档,还是第三方包下载、更新都有对应的工具。内置完整测试框架,其中包括单元测试、性能测试、代码覆盖率、数据竞争,以及用来调优的 pprof,这些都是保障代码能正确而稳定运行的必备利器。
总结
大部分都取自网上,毕竟作为初学者,自己肯定是没那么了解的,下一篇完成一下工程实践任务。 一些Go语言可用资源:
Go语言中文网:(www.golangcn.org/)
Go语言圣经:(books.studygolang.com/gopl-zh/)
Go语言特性:(c.biancheng.net/view/3990.h…) ---<<< 本文主要选自于此