golang for range 遍歷 對比 PHP、python

wangchunbo發表於2020-06-02

指定 key 與value

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

也可以只獲取值。

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

準備一個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))

在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
    }
}

不用就將索引忽略!!!

本作品採用《CC 協議》,轉載必須註明作者和本文連結

上海PHP自學中心-免費程式設計視訊教學|
7Dn78VKKcW.jpg!large
S3d25uqwht.png!large

相關文章