[TOC]
# 數組聲明和初始化
## 數組聲明
~~~
var 數組變量名 [元素數量]T
~~~
數組的長度 `必須` 是 `常量`,并且`長度`是數組類型的一部分。一旦定義,長度不能變。
eg:
~~~
var name [5]string
~~~
注:`[5]int`和`[10]int`是不同的類型。
~~~
var a [3]int
var b [4]int
a = b //不可以這樣做,因為此時a和b是不同的類型
~~~
數組可以通過下標進行訪問,下標是從`0`開始,最后一個元素下標是:`len-1`,訪問越界(下標在合法范圍之外),則觸發訪問越界,會panic。
## 初始化
### 方法一 (初始化數組時可以使用初始化列表來設置數組元素的值)
~~~
var numArray = [3]int{1, 2}
~~~
### 方法二 (如果數組長度不確定,可以使用`...`代替數組的長度,編譯器會根據元素個數自行推斷數組的長度)
~~~
num := [...]int{1,2,3,4,5}
~~~
### 方法三 (使用指定索引值的方式來初始化數組)
~~~
a := [...]int{1: 1, 3: 5}
fmt.Println(a) // [0 1 0 5]
~~~
## 訪問數組元素
數組元素可以通過索引(位置)來讀取(或者修改),索引從 0 開始,第一個元素索引為 0,第二個索引為 1,以此類推。
## 多維數組
### 二維數組的定義
~~~
func main() {
a := [3][2]string{
{"大雄", "靜香"},
{"小叮當", "胖虎"},
{"小夫", "群演"},
}
fmt.Println(a) //[[大雄 靜香] [小叮當 胖虎]]
fmt.Println(a[1][0]) //支持索引取值:小叮當
}
~~~
**注意:**多維數組**只有第一層**可以使用`...`來讓編譯器推導數組長度
~~~
//支持的寫法
a := [...][2]string{
{"大雄", "靜香"},
{"小叮當", "胖虎"},
{"小夫", "群演"},
}
//不支持多維數組的內層使用...
b := [3][...]string{
{"大雄", "靜香"},
{"小叮當", "胖虎"},
{"小夫", "群演"},
}
~~~
- Go準備工作
- 依賴管理
- Go基礎
- 1、變量和常量
- 2、基本數據類型
- 3、運算符
- 4、流程控制
- 5、數組
- 數組聲明和初始化
- 遍歷
- 數組是值類型
- 6、切片
- 定義
- slice其他內容
- 7、map
- 8、函數
- 函數基礎
- 函數進階
- 9、指針
- 10、結構體
- 類型別名和自定義類型
- 結構體
- 11、接口
- 12、反射
- 13、并發
- 14、網絡編程
- 15、單元測試
- Go常用庫/包
- Context
- time
- strings/strconv
- file
- http
- Go常用第三方包
- Go優化
- Go問題排查
- Go框架
- 基礎知識點的思考
- 面試題
- 八股文
- 操作系統
- 整理一份資料
- interface
- array
- slice
- map
- MUTEX
- RWMUTEX
- Channel
- waitGroup
- context
- reflect
- gc
- GMP和CSP
- Select
- Docker
- 基本命令
- dockerfile
- docker-compose
- rpc和grpc
- consul和etcd
- ETCD
- consul
- gin
- 一些小點
- 樹
- K8s
- ES
- pprof
- mycat
- nginx
- 整理后的面試題
- 基礎
- Map
- Chan
- GC
- GMP
- 并發
- 內存
- 算法
- docker