Go中Range遍历Array, Slice

本文介绍了Go语言中`range`关键字的使用,详细讲解了如何遍历Array和Slice,以及在Map中的应用。在Array和Slice中,`range`返回索引和对应的元素值。对于Array,遍历过程中创建了值的副本,更改不会影响原始数组;而对于Slice,遍历则是浅拷贝,可能会影响到原Slice的内容。示例展示了遍历过程及其可能的顺序变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1, range用来遍历  array, slice,还有map

     在array,slice中返回索引值还有数值

     在map中返回键值对

2,

package main
  2 
  3 import (
  4     "fmt"
  5     "sort"        
  6 )
  7 
  8 func main(){
  9     m := map[int]string{1 : "a", 2 : "b", 3 : "c", 4 : "d", 5 : "e"}
 10     s := make([]int, len(m))
 11     i := 0
 12     for k, _ := range m{
 13         s[i] = k
 14         fmt.Println(i, k)
 15         i++
 16     }
 17 
 18     fmt.Println(s)
 19     sort.Ints(s)            //将下面两行注掉,结果就是从小到大排序
 20     fmt.Println(s)
 21 
 22 }

[root@localhost GO]# ./hello
0 3
1 4
2 5
3 1
4 2
[3 4 5 1 2]
[1 2 3 4 5]

[root@localhost GO]# ./hello
0 3                           //这个顺序是随机的,每次运行都不一样
1 4
2 5
3 1
4 2
[3 4 5 1 2]

[1 2 3 4 5]
 

3,range遍历数组是相当于c++中的深拷贝,是复制了一份值,之后的改动和原数组互补干扰

   遍历Slice相当于C++中浅拷贝,

 package main
  2 
  3 import (
  4     "fmt"
  5 )
  6 
  7 func main(){
  8     s := [3]int{1, 2, 3}        //数组, 用range是拷贝了一份值去操作
  9     
 10     for i, v := range s{
 11         if i == 0{
 12             s[1] = 200
 13             s[2] = 300
 14         }
 15         s[i] = v + 100
 16         fmt.Print(s[i], " ")    //101 102 103
 17     }
 18     fmt.Println(s)            //[101, 102, 103]
 19 }
 package main
  2 
  3 import (
  4     "fmt"
  5 )
  6 
  7 func main(){
  8     s := []int{1, 2, 3}        切片是拷贝了指针,还是在操作原数组的值
  9     
 10     for i, v := range s{
 11         if i == 0{
 12             s[1] = 200
 13             s[2] = 300
 14         }
 15         s[i] = v + 100
 16         fmt.Print(s[i], " ")        //101 300 400
 17     }
 18     fmt.Println(s)                   //[101, 300, 400]
 19 }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值