Go語言————7.3 For-range 結構
7.3 For-range 結構
這種構建方法可以應用於陣列和切片:
for ix, value := range slice1 {
...
}
第一個返回值 ix 是陣列或者切片的索引,第二個是在該索引位置的值;他們都是僅在 for 迴圈內部可見的區域性變數。value 只是 slice1 某個索引位置的值的一個拷貝,不能用來修改 slice1 該索引位置的值。
示例 7.9 slices_forrange.go
package main
import "fmt"
func main() {
var slice1 []int = make([]int, 4)
slice1[0] = 1
slice1[1] = 2
slice1[2] = 3
slice1[3] = 4
for ix, value := range slice1 {
fmt.Printf("Slice at %d is: %d\n", ix, value)
}
}
示例 7.10 slices_forrange2.go
package main
import "fmt"
func main() {
seasons := []string{"Spring", "Summer", "Autumn", "Winter"}
for ix, season := range seasons {
fmt.Printf("Season %d is: %s\n", ix, season)
}
var season string
for _, season = range seasons {
fmt.Printf("%s\n", season)
}
}
slices_forrange2.go 給出了一個關於字串的例子, _
可以用於忽略索引。
如果你只需要索引,你可以忽略第二個變數,例如:
for ix := range seasons {
fmt.Printf("%d", ix)
}
// Output: 0 1 2 3
如果你需要修改 seasons[ix]
的值可以使用這個版本。
多維切片下的 for-range:
通過計算行數和矩陣值可以很方便的寫出如(參考第 7.1.3 節)的 for 迴圈來,例如(參考第 7.5 節的例子 multidim_array.go):
for row := range screen {
for column := range screen[row] {
screen[row][column] = 1
}
}
問題 7.5 假設我們有如下陣列:items := [...]int{10, 20, 30, 40, 50}
a) 如果我們寫了如下的 for 迴圈,那麼執行完 for 迴圈後的 items
的值是多少?如果你不確定的話可以測試一下:)
for _, item := range items {
item *= 2
}
b) 如果 a) 無法正常工作,寫一個 for 迴圈讓值可以 double。
問題 7.6 通過使用省略號操作符 ...
來實現累加方法。
練習 7.7 sum_array.go
a) 寫一個 Sum 函式,傳入引數為一個 32 位 float 陣列成的陣列 arrF,返回該陣列的所有數字和。
如果把陣列修改為切片的話程式碼要做怎樣的修改?如果用切片形式方法實現不同長度陣列的的和呢?
b) 寫一個 SumAndAverage 方法,返回兩個 int 和 float32 型別的未命名變數的和與平均值。
練習 7.8 min_max.go
寫一個 minSlice 方法,傳入一個 int 的切片並且返回最小值,再寫一個 maxSlice 方法返回最大值。
相關文章
- GO語言————8.3 for-range 的配套用法Go
- GO語言————5.4 for 結構Go
- Go 語言 結構體Go結構體
- GO語言————5.3 switch 結構Go
- Go語言(1)——程式結構Go
- Go 語言 結構體連結串列Go結構體
- go語言學習-結構體Go結構體
- Go 語言 結構體和方法Go結構體
- GO語言————5.1 控制結構之if-else結構Go
- GO語言————4.2 Go程式的基本結構和要素Go
- 帶讀 |《Go in Action》(中文:Go語言實戰) 語法和語言結構概覽(三)Go
- 帶讀 |《Go in Action》(中文:Go語言實戰)語法和語言結構概覽 (二)Go
- Go 語言目錄結構與實踐Go
- GO語言基礎(結構+語法+型別+變數)Go型別變數
- Go語言流程控制之迴圈結構篇Go
- Go語言基礎語法總結Go
- Go語言學習筆記 - PART7 - 結構體Go筆記結構體
- SQL語言(結構化查詢語言)SQL
- GO語言學習筆記-包結構篇 Study for Go ! Chapter eight - Package StructureGo筆記APTPackageStruct
- Go語言————1、初識GO語言Go
- 包羅永珍的結構體 -- 就要學習 Go 語言結構體Go
- Go 語言—資料結構和演算法專案推薦Go資料結構演算法
- Go語言實現excel匯入無限級選單結構GoExcel
- C語言-選擇結構C語言
- GO語言————2、GO語言環境安裝Go
- go語言之結構體和方法Go結構體
- Go語言入門系列(五)之指標和結構體的使用Go指標結構體
- Go語言結構體鏈式程式設計與JSON序列化Go結構體程式設計JSON
- Go語言結構體(struct)物件導向程式設計基礎篇Go結構體Struct物件程式設計
- Go語言實現的23種設計模式之結構型模式Go設計模式
- C語言教程——03 C語言結構C語言
- 【Go語言入門系列】(八)Go語言是不是面嚮物件語言?Go物件
- Go_go語言初探Go
- C語言結構體專題C語言結構體
- C語言結構體大小分析C語言結構體
- Go語言mapGo
- go 語言切片Go
- go 語言常量Go