GoLang 基础 | 青训营笔记

113 阅读3分钟

写在前面

几个月前我学习了 Go 语言,在本次青训营学习 Go 相关内容算是一个回顾和补充。本篇内容综合青训营 Go 相关内容和我对 Go 的学习和掌握,写了我 Go 语言基础的总结和感悟。

Go 语言的起源

2007 年,Google 工程师 Rob Pike,Ken Thompson 和 Robert Griesemer 开始设计一门全新的语言,这就是 Go 语言的最初原型。

Go 语言特性

  1. Go 保证了能到达静态编译语言的安全和性能,又达到了动态语言开发维护的高效率
  2. 引入了自动垃圾回收机制。
  3. 天然并发:从语言层面支持并发,实现简单。goroutine 轻量级线程,可实现大并发处理,高效利用多核。
  4. Go 吸收了一些其他语言的优点,如C、Python、JavaScript,也在此基础上进行了一些创造,拥有了一些 GoLang 独特的功能。

基础语法

(这部分是我在学习和使用 GoLang 的过程中感觉需要特别注意的或与其他语言有较大差异的内容。注意:不是语法总结。)

  1. GoLang 的一大特点是使用包进行项目管理,每一个文件都需要属于一个包,使用 packagepackage 来标识当前文件属于哪一个包,包和文件所述的文件夹名称要对应。这种方式给使用者的直观感受就是清晰简便,不论是在 IDE 中打开 Go 项目还是在 OS 资源管理器中查看项目,都可以快速的分辨出不同功能或模块所在的位置。这里需要注意一点,源文件不能单独存在,即必须属于某个包,这和很多编程语言是不同的。
  2. GoLang 为了清晰明了,很多功能都只提供了一种实现方式。
  3. GoLang 提供了很多数据类型,总体分为基本数据类型和派生数据类型。特别注意:GoLang 没有提供自动数据类型转换,我感觉这会提高一些编程复杂度,但是这会让程序更加清晰。
    • 基本数据类型
      • 数值型
        • 整数类型:int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64, byte
        • 浮点类型:float32, float64(推荐使用,精度高)
      • 字符型:没有专门的字符型,使用 byte 存储单个字符。这里是比较独特的,byte 类型是数值型,也就是说在 GoLang 中存储字符是存储相应的 UTF-8 码值(GoLang 使用 UTF-8 编码)。
      • 布尔型
      • 字符串:需要注意的是 GoLang 中的 string 是无法修改单个字符的,但是依旧可以通过 + 运算符进行多个字符串之间的连接。
    • 派生数据类型(个人感觉这部分数据类型极大程度上便利了程序的实现)
      • 指针
      • 数组
      • 结构体
      • 管道
      • 函数:看做一种数据类型,可以像 JS 那样赋值给一个函数类型的变量,然后可以通过这个变量使用这个函数。
      • 管道:感觉非常好用的一种数据类型。在使用多协程时,最好使用管道存储数据,它自带数据安全。
      • 切片
      • 接口
      • map:注意,GoLang 的 map 是完全无序的。