写过一段时间 golang 后,业务开发应该游刃有余了,可以检查下这些基本的语法你都掌握了么?25 个关键字、37 个预定义标识符,41 个标准库是不是都很熟悉了? 独特的 interface、go、select 语法你都会用了么?
基础知识
正如大部分编程语言,了解基本的数据结构、关键字、语法、包引用、错误处理等,就可以进行简单的业务开发了. 本文主要梳理了 golang 这些基本的知识点,可以对照看是否都了解它们的用法了.
一些基本的数据结构如 int、bool、string、byte等,语法 if、else、for、break、func、return 、struct 等与其它语言类似,有编程基础很快能够掌握.
此外,也有许多写法上较为特别的概念需要注意:
- 抽象接口 interface 的使用
- 引用类型 slice、map、channel 及其底层原理
- 协程并发 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
- 并发: go、select、chan
- 结构 : 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、int64
- uint、uint8、uint16、uint32、uint64、uintprt
- float32、float64、complex64、complex128
- bool、byte、rune、string、error
内置函数
- make、len、cap、new、append、copy、close、delete
- complex、real、imag
- panic、recover
内置 41 个标准库
库即可以直接引入代码的 package,标准库即 golang 官方提供的库. 它们都是十分常用的 package. 本文将 41 个标准库简单分为 6 个类别.
包括基本的数据结构及算法处理如 math、hash、container 等,输入输出如 io、bufio 等,网络库 net、html 等,go 语言自身库如 reflect、errors 等,操作系统库如 sync、time、syscall 等,其它工具库如 flag、database 等.
这 41 个官方标准库不仅是最常用的基本库,提供了许多优秀的基础能力. 也是最优秀的 golang 源码,是十分值得进一步探究的. 详细的 41 个标准库如下图所示.
问题思考
乍一看,上面那些东西都很熟悉,这些关键字、预定义标识符、标准库都是经常出现在自己的代码中的. 那么下面这些问题你能回答么?
- golang 的引用类型有哪几个?什么是引用类型?
- append 操作该如何使用?赋值时需要注意什么?
- golang 的切片 slice 是如何扩容的?
- select 有什么作用?它是如何实现的?
- 如何改变 map 中的 value ?如果存储的是一个结构体对象,如何改变这个对象的成员变量值?map 是如何实现的?它如何扩容?
- len() 函数和 cap() 函数有什么区别?
閱讀更多 皮拉圖斯 的文章