golang range遍歷數組,切片,集合

golang  range遍歷數組,切片,集合

go 語言中range關鍵字用於 for 循環中迭代數組(array)、切片(slice)、通道(channel)或集合(map)的元素。在數組和切片中它返回元素的索引和索引對應的值,在集合中返回 key-value 對。

  • range 變量

大多數人都知道在range子句的左邊(在上面的例子中的i)你可以使用以下命令分配循環變量:

-- 賦值(=)

-- 短變量聲明(:=)

你也可以選擇不做任何事情來完全忽略循環變量。

如果使用短變量聲明(:=),Go將為循環的每次迭代重用變量(僅在循環的範圍內)

  • range 表達式

在range子句的右側(在下面的示例中array),你可以找到他們稱之為range表達式的內容。它可以包含任何計算結果為以下之一的表達式:

-- array

-- pointer to an array

-- slice

-- string

-- map

-- channels that allow receiving, e.g. chan int or chan

實例 1:

<code>

package

main

import

"fmt"

func

main

()

{ array := [

3

]

int

{

1

,

2

,

3

} slice := []

int

{

10

,

11

,

12

,

13

} kvs :=

map

[

string

]

string

{

"a"

:

"A"

,

"b"

:

"B"

,

"c"

:

"C"

}

for

i, v :=

range

array { fmt.Println(i, v) }

for

i, v :=

range

slice { fmt.Println(i, v) }

for

k, v :=

range

kvs { fmt.Println(k, v) } }/<code>

輸出:

<code>

0

1

1

2

2

3

*****************

0

10

1

11

2

12

3

13

*****************

a

A

b

B

c

C

/<code>

如果將for range 數組,切片和集合的v去掉,變成如下代碼,range將分別返回對應數組和列表的索引,以及集合的鍵。

實例2:

<code>

package

main

import

"fmt"

func

main

()

{ array := [

3

]

int

{

1

,

2

,

3

} slice := []

int

{

10

,

11

,

12

,

13

} kvs :=

map

[

string

]

string

{

"a"

:

"A"

,

"b"

:

"B"

,

"c"

:

"C"

}

for

i :=

range

array { fmt.Println(i) }

for

i :=

range

slice { fmt.Println(i) }

for

k :=

range

kvs { fmt.Println(k) } }/<code>

輸出:

<code>

0

1

2

*****************

0

1

2

3

*****************

a

b

c

/<code>


分享到:


相關文章: