寫過一段時間 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() 函數有什麼區別?
閱讀更多 皮拉圖斯 的文章