《每天用对比的思想学点 golang》golang for range 遍历 对比 PHP、python

《每天用对比的思想学点 golang》golang for range 遍历 对比 PHP、python

php 的遍历

指定 key 与value

foreach($arr as $key => $value){
    echo "{$key}==>{$value}<br>";
}

也可以只获取值。

foreach($arr as $value){
    echo "{$value}<br>";
 }

python 的遍历

只有值

准备一个list:

list = [‘html’, ‘js’, ‘css’, ‘python’]

#!/usr/bin/env python
# -*- coding: utf-8 -*-
if __name__ == '__main__':
    list = ['html', 'js', 'css', 'python']

    # 方法1
    print '遍历列表方法1:'
    for i in list:
        print ("序号:%s   值:%s" % (list.index(i) + 1, i))

    print '\n遍历列表方法2:'
    # 方法2
    for i in range(len(list)):
        print ("序号:%s   值:%s" % (i + 1, list[i]))

    # 方法3
    print '\n遍历列表方法3:'
    for i, val in enumerate(list):
        print ("序号:%s   值:%s" % (i + 1, val))

    # 方法3
    print '\n遍历列表方法3 (设置遍历开始初始位置,只改变了起始序号):'
    for i, val in enumerate(list, 2):
        print ("序号:%s   值:%s" % (i + 1, val))

key value 形式

遍历 key=>value 形式的数据dict。

for (k,v) in  dict.items(): 
    print "dict[%s]=" % k,v

go 的遍历

在go语言中,遍历数据或切片时可以用range,range会产生两个值,分别是数据的索引与值:

package main

import "fmt"

func main() {
    x := []string{"a", "b", "c"}

    for v := range x {
        fmt.Println(v) //prints 0, 1, 2
    }
}

这种写法非常不好(虽然没有报错),因为for…range的过程中,产生了index(索引)与value两个值,但是在遍历的时候,却没有显示地声明有这index变量,虽然我们此时不用index,时刻养成良好的编码习惯。

package main

import "fmt"

func main() {  
    x := []string{"a","b","c"}

    for _, v := range x {
        fmt.Println(v) //prints a, b, c
    }
}

不用就将索引忽略!!!

总结

在php、python 遍历时候,如果你不需要使用 key ,那就别拿key了。

但是在 golang 中,你的遍历自带 key,抱歉,弟弟,你扔不掉。
那怎么办呢? 就是用一个匿名变量 _ 来把它 接收了吧。

例子:

sum := 0

//通过for循环遍历集合中的数据

//for i := 0; i < len(arr); i++ {

    // //fmt.Println(arr[i])

    // sum += arr[i]

//}

//通过for循环遍历集合中的数据

//i -> index 下标 v -> value 值

//_匿名变量 如果数据的值不需要接收 可以通过匿名变量来接收数据

for  _, v := range arr {

    //fmt.Println(i, v)

    sum += v

}

fmt.Println(sum)

防爬虫说明

禁止 学习某地爬虫,知乎爬虫,CSDN 爬虫。

本文,首发在 learnku 社区。

@author
汪春波(www.shxdledu.cn)

本作品采用《CC 协议》,转载必须注明作者和本文链接
嗨,我是波波。曾经创业,有收获也有损失。我积累了丰富教学与编程经验,期待和你互动和进步! 公众号:上海PHP自学中心 付费知识星球:破解面试:程序员的求职导师
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
司机 @ 欣昊玉
文章
273
粉丝
339
喜欢
557
收藏
1103
排名:64
访问:12.1 万
私信
所有博文
社区赞助商