《每天用对比的思想学点 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 协议》,转载必须注明作者和本文链接
• 15年技术深耕:理论扎实 + 实战丰富,教学经验让复杂技术变简单 • 8年企业历练:不仅懂技术,更懂业务落地与项目实操 • 全栈服务力:技术培训 | 软件定制开发 | AI智能化升级 关注「上海PHP自学中心」获取实战干货
wangchunbo
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
司机 @ 某医疗行业
文章
315
粉丝
354
喜欢
568
收藏
1139
排名:60
访问:12.6 万
私信
所有博文
社区赞助商