golang 基础知识点梳理

写过一段时间 golang 后,业务开发应该游刃有余了,可以检查下这些基本的语法你都掌握了么?25 个关键字、37 个预定义标识符,41 个标准库是不是都很熟悉了? 独特的 interface、go、select 语法你都会用了么?

基础知识

正如大部分编程语言,了解基本的数据结构、关键字、语法、包引用、错误处理等,就可以进行简单的业务开发了. 本文主要梳理了 golang 这些基本的知识点,可以对照看是否都了解它们的用法了.

一些基本的数据结构如 int、bool、string、byte等,语法 if、else、for、break、func、return 、struct 等与其它语言类似,有编程基础很快能够掌握.

此外,也有许多写法上较为特别的概念需要注意:

抽象接口 interface 的使用引用类型 slicemapchannel 及其底层原理协程并发 go、select错误处理 error、nil、defer、panic内置函数 append、copy 标准库 io、reflect 等等

25个关键字

golang 有 25 个常用关键字,它们是语法的关键. 是不允许被定义为变量名的. 根据它们的作用,我简单分了个类. 其中黑体的关键字,是值得更进一步探究的,它们是 golang 中比较特别的特性. 25 个关键字如下:

基本: var、const、package、import、map方法: func、return、interface、struct、type并发: goselectchan结构: if、else、switch、case、default、fallthrough、for、break、continue、goto、range其它: defer

预定义

除了构成语法的关键字,还有一些 golang 提供的内建常量、类型及函数. 如下共 37 个,其中常量 4 个,类型 20 个,函数 13 个. 黑体的部分很常用,是 golang 独特的部分,也是值得进一步探究的.

内建常量

true、false、iota、nil

内建类型

int、int8、int16、int32、int64uint、uint8、uint16、uint32、uint64、uintprtfloat32、float64、complex64、complex128bool、byte、rune、string、error

内置函数

make、len、cap、new、appendcopy、close、deletecomplex、real、imagpanicrecover

内置 41 个标准库

库即可以直接引入代码的 package,标准库即 golang 官方提供的库. 它们都是十分常用的 package. 本文将 41 个标准库简单分为 6 个类别.

包括基本的数据结构及算法处理如 math、hash、container 等,输入输出如 io、bufio 等,网络库 net、html 等,go 语言自身库如 reflect、errors 等,操作系统库如 sync、time、syscall 等,其它工具库如 flag、database 等.

这 41 个官方标准库不仅是最常用的基本库,提供了许多优秀的基础能力. 也是最优秀的 golang 源码,是十分值得进一步探究的. 详细的 41 个标准库如下图所示.

41 个标准库

问题思考

乍一看,上面那些东西都很熟悉,这些关键字、预定义标识符、标准库都是经常出现在自己的代码中的. 那么下面这些问题你能回答么?

golang 的引用类型有哪几个?什么是引用类型?append 操作该如何使用?赋值时需要注意什么?golang 的切片 slice 是如何扩容的? select 有什么作用?它是如何实现的?如何改变 map 中的 value ?如果存储的是一个结构体对象,如何改变这个对象的成员变量值?map 是如何实现的?它如何扩容?len() 函数和 cap() 函数有什么区别?