返回顶部
首页 > 资讯 > 精选 >GO中range怎么用
  • 268
分享到

GO中range怎么用

2023-06-25 11:06:51 268人浏览 八月长安
摘要

这篇文章给大家分享的是有关Go中range怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。GO 语言的 for…range  能做什么呢?golang 的 for…range  

这篇文章给大家分享的是有关Go中range怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

GO 语言的 for…range  能做什么呢?

golang 的 for…range   是 go 自身的语法,可以用来遍历数据结构,有如下数据结构可以遍历

  • 切片 slice

  • 数组 array

  • map 哈希表

  • channel 通道

for…range  如何使用 ?

我们分别来看看可以如何使用他们,for…range  相当于一个迭代器,可以遍历数据结构的键/索引 和值

数组 array

初始化一个数组

使用 for…range 遍历 , 对应的是 索引  和 值

func main() { myArray := [5]int{1, 2, 3, 4, 5} for i, v := range myArray {  fmt.Printf("%d -- %d -- %p\n", i, v, &v) }}

切片 slice

初始化一个切片
使用 for…range 遍历 , 对应的是 索引  和 值

mySlice := []int{1, 2, 3, 4, 5} for i, v := range mySlice {    fmt.Printf("%d -- %d -- %p\n", i, v, &v)}

map 哈希表

  • 初始化一个 map 哈希表

  • 使用 for…range 遍历 , map 对应的 键值对

myMap := map[string]string{    "name":  "xmt",    "hobby": "program",    "addr":  "mengli",}for k, v := range myMap {    fmt.Printf("%s -- %s -- %p\n", k, v, &v)}

channel 通道

  • 创建一个可以缓冲 10 个 int 类型数据的通道

  • 创建一个协程专门向通道中写入数据

  • 主协程遍历通道,读取数据

package mainimport "fmt"var myCh = make(chan int, 10)func writeCh() { for i := 0; i < 5; i++ {  myCh <- i } close(myCh)}func main() { go writeCh() for {  for data := range myCh {   fmt.Println(data)  }  break }}

for…range  的返回值有哪些情况,可以对于任何数据结构使用吗?

并不是所有数据结构都可以使用  for…range  的,如下结构可以使用这个方法


返回值 1返回值 2数据传递
字符串索引索引对应的值值传递
数组或者切片索引索引对应的值数组:值传递
切片:引用传递
哈希表键对应的值指针
通道通道中的数据
指针

for…range  的返回值如果不需要,可以如何处理?

相信写过 golang 的 xdm 都知道,go 里面对于我们不需要的返回值,都可以使用 - 来表示 ,因此 for…range  当然也可以这样

例如:

myMap := map[string]string{    "name":  "xmt",    "hobby": "program",    "addr":  "mengli",}for _, v := range myMap {    fmt.Printf("%s -- %p\n", v, &v)}

for…range  的数据是如何传递的?
数据都是通过复制传递的,也就是都是值传递的,只不过由于数据结构不一样,数组和切片在这里还是有一些区别的
前面的文章,我们有说到,切片,对应着 有 3 个元素的数据结构,一个是 cap,一个是 len, 一个是 ptr ,指向的是一个底层数组

切片是引用传递,但是传递数据的时候,切片这个变量是值传递,但是它实际指向的底层数组还是不会变的

咱们来写一个 demo 查看一下:

我们思路是这个样子:

遍历一个 数组/切片,在遍历当前值的时候,去修改后面索引对应的值,全部遍历完毕后,查看结果中,实际的数据是否会被修改掉,若修改掉了,则是切片是传引用,若没有修改掉,则是数组是传值

数组的效果

myArray := [5]int{1, 2, 3, 4, 5}fmt.Println(myArray)for i, v := range myArray {    if  i == 0{        myArray[2] = 888    }    fmt.Printf("%d -- %d -- %p\n", i, v, &myArray[i])}

效果如下:

go run main.go
[1 2 3 4 5]
0 -- 1 -- 0x1189c120
1 -- 2 -- 0x1189c124
2 -- 3 -- 0x1189c128
3 -- 4 -- 0x1189c12c
4 -- 5 -- 0x1189c130

切片的效果

mySlice := []int{1, 2, 3, 4, 5}fmt.Println(mySlice)for i, v := range mySlice {    if i == 0{        mySlice[2] = 888    }    fmt.Printf("%d -- %d -- %p\n", i, v, &mySlice[i])}

效果如下:

go run main.go
[1 2 3 4 5]
0 -- 1 -- 0x1140e340
1 -- 2 -- 0x1140e344
2 -- 888 -- 0x1140e348
3 -- 4 -- 0x1140e34c
4 -- 5 -- 0x1140e350

感谢各位的阅读!关于“GO中range怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: GO中range怎么用

本文链接: https://lsjlt.com/news/304169.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • GO中range怎么用
    这篇文章给大家分享的是有关GO中range怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。GO 语言的 for…range  能做什么呢?golang 的 for…range  ...
    99+
    2023-06-25
  • go语言中for range怎么使用
    这篇文章主要介绍“go语言中for range怎么使用”,在日常操作中,相信很多人在go语言中for range怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”go语言中for range怎么使用”的疑...
    99+
    2023-07-04
  • go语言的range关键字怎么使用
    这篇“go语言的range关键字怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“go语言的range关键字怎么使用”文...
    99+
    2023-07-05
  • php中range()函数怎么用
    range()函数作用:php中range()函数的作用是创建一个指定范围的数组。range()函数语法:range(low,high,step)参数:low:指定数组的最低值。high:指定数组的最高值。step:指定元素之间的步进制,默...
    99+
    2024-04-02
  • python中range函数怎么用
    这篇文章主要介绍python中range函数怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!python中range函数用法:【range()】函数可创建一个整数列表,一般用在for循环中,函数语法为【range...
    99+
    2023-06-07
  • GO的range具体使用
    目录GO 语言的 for…range  能做什么呢?for…range  如何使用 ?数组 array切片 slicechannel 通道for…rang...
    99+
    2024-04-02
  • GO的range如何使用
    在Go语言中,range关键字用于迭代数组、切片、字符串、映射和通道等数据结构。它提供了一种简洁的遍历方式。使用range关键字的基本语法如下:```gofor index, value := range data {// 循环体}``...
    99+
    2023-08-09
    GO range
  • Python中range()与np.arange()怎么使用
    这篇文章主要讲解了“Python中range()与np.arange()怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python中range()与np.arange()怎么使用”吧...
    99+
    2023-07-02
  • python中range()函数怎么使用
    在Python中,range()函数用于生成一个整数序列。range()函数的使用方式为:1. range(stop):生成从0到s...
    99+
    2023-10-18
    python
  • html5中input新属性range怎么用
    小编给大家分享一下html5中input新属性range怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!代码如下:<i...
    99+
    2024-04-02
  • GO的range如何使用详解
    目录GO 语言的 for…range 能做什么呢?for…range 如何使用 数组 array切片 slicemap 哈希表channel 通道for&...
    99+
    2023-02-10
    GO range使用 GO range
  • css3的:out-of-range和:in-range伪类怎么用
    这篇文章主要介绍“css3的:out-of-range和:in-range伪类怎么用”,在日常操作中,相信很多人在css3的:out-of-range和:in-range伪类怎么用问题上存在疑惑,小编查阅了...
    99+
    2024-04-02
  • python中的range函数|python中的range函数|range()函数详解|Python中range(len())的用法
    本期目录 一、range()传递不同的参数1、传递一个参数时2、传递两个参数时3、传递三个参数时 二、使用 range() 构建 for 循环三、遍历列表时使用 range(len()) ...
    99+
    2023-09-29
    python 数据分析 numpy
  • python中range()怎么结合语句使用
    这篇文章将为大家详细讲解有关python中range()怎么结合语句使用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。python可以做什么Python是一种编程语言,内置了许多有效的工具,Python几...
    99+
    2023-06-14
  • Python range函数怎么使用
    range函数在Python中用于生成一个指定范围内的整数序列。range函数有三种常见的用法:1. range(stop)这种用法...
    99+
    2023-10-18
    Python
  • Python range()函数怎么使用
    这篇文章主要介绍了Python range()函数怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python range()函数怎么使用文章都会有所收获,下面我们一起来看看吧。Pyt...
    99+
    2023-07-05
  • python里的range()怎么使用
    range()函数用于生成一个指定范围内的数字序列。它可以接受1个、2个或3个参数。 当只有一个参数时,表示生成从0开始到该参数(...
    99+
    2024-04-02
  • mysql中怎么实现range分区
    本篇文章为大家展示了mysql中怎么实现range分区,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一,如何启动mysqld?    ...
    99+
    2024-04-02
  • go语言中for range使用方法及避坑指南
    目录前言for range基本用法for range 和 for的区别for range容易踩的坑for range和fo...
    99+
    2024-04-02
  • Go for range中容易踩的坑有哪些
    这篇文章主要介绍了Go for range中容易踩的坑有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Go for range中容易踩的坑有哪些文章都会有所收获,下面...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作