【实践】Go 语言入门指南:基础语法和常用特性解析| 青训营

56 阅读3分钟

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…) ---<<< 本文主要选自于此