《每天用對比的思想學點 golang》PHP Python 對比 Golang 中的陣列 切片 map

wangchunbo發表於2020-06-04
型別/語言 陣列 切片 map
PHP 陣列能夠在單個變數中儲存多個值,單維陣列與其他語言差不多,但是多維陣列就是不一樣了。 沒有切片概念,通過單維陣列就完事。可以使用 []來定義陣列,實現同樣的效果 沒有map概念,就是多維陣列
Python 沒有陣列的概念,通過元組,list實現。注意,元組是不可修改的。 就是我們們的list 就是我們們的dict
Golang 陣列是具有相同唯一型別的一組已編號且長度固定的資料項序列,這種型別可以是任意的原始型別例如整形、字串或者自定義型別。注意,陣列長度不可以改變 切片是對陣列的抽象,可以改變長度。 map 是一種無序的鍵值對的集合

陣列


$cars=array("Volvo","BMW","Toyota"); 

echo  "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . "."; 

切片

沒有切片概念,通過單維陣列就完事。可以使用 []來定義陣列,實現同樣的效果

map

// 二維陣列:  
$cars = array  ( 
    array("Volvo",100,96), 
    array("BMW",60,59),
    array("Toyota",110,100)  
);

列印如下:

Array
(
    [0] => Array
        (
            [0] => Volvo
            [1] => 100
            [2] => 96
        )

    [1] => Array
        (
            [0] => BMW
            [1] => 60
            [2] => 59
        )

    [2] => Array
        (
            [0] => Toyota
            [1] => 110
            [2] => 100
        )

)

陣列

沒有陣列的概念,通過元組,list實現。注意,元組是不可修改的。

list:

list1 = ['physics', 'chemistry', 1997, 2000]
list2 = [1, 2, 3, 4, 5, 6, 7 ]

print "list1[0]: ", list1[0]
print "list2[1:5]: ", list2[1:5]

元組:

tup1 = ('physics', 'chemistry', 1997, 2000)
tup2 = (1, 2, 3, 4, 5, 6, 7 )

print "tup1[0]: ", tup1[0]
print "tup2[1:5]: ", tup2[1:5]

切片

就是我們們的list ,例子在上面

map

就是我們們的dict

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}

print "dict['Name']: ", dict['Name']
print "dict['Age']: ", dict['Age']

陣列

package main

import "fmt"

func main() {
   var n [10]int /* n 是一個長度為 10 的陣列 */
   var i,j int

   /* 為陣列 n 初始化元素 */         
   for i = 0; i < 10; i++ {
      n[i] = i + 100 /* 設定元素為 i + 100 */
   }

   /* 輸出每個陣列元素的值 */
   for j = 0; j < 10; j++ {
      fmt.Printf("Element[%d] = %d\n", j, n[j] )
   }
}

執行結果如下:

Element[0] = 100
Element[1] = 101
Element[2] = 102
Element[3] = 103
Element[4] = 104
Element[5] = 105
Element[6] = 106
Element[7] = 107
Element[8] = 108
Element[9] = 109

切片

切片是可索引的,並且可以由 len() 方法獲取長度。

切片提供了計算容量的方法 cap() 可以測量切片最長可以達到多少。

package main

import "fmt"

func main() {
   var numbers = make([]int,3,5)

   printSlice(numbers)
}

func printSlice(x []int){
   fmt.Printf("len=%d cap=%d slice=%v\n",len(x),cap(x),x)
}

結果如下:

len=3 cap=5 slice=[0 0 0]

map

package main

import "fmt"

func main() {
    var countryCapitalMap map[string]string /*建立集合 */
    countryCapitalMap = make(map[string]string)

    /* map插入key - value對,各個國家對應的首都 */
    countryCapitalMap [ "France" ] = "巴黎"
    countryCapitalMap [ "Italy" ] = "羅馬"
    countryCapitalMap [ "Japan" ] = "東京"
    countryCapitalMap [ "India " ] = "新德里"

    /*使用鍵輸出地圖值 */ 
    for country := range countryCapitalMap {
        fmt.Println(country, "首都是", countryCapitalMap [country])
    }

    /*檢視元素在集合中是否存在 */
    capital, ok := countryCapitalMap [ "American" ] /*如果確定是真實的,則存在,否則不存在 */
    /*fmt.Println(capital) */
    /*fmt.Println(ok) */
    if (ok) {
        fmt.Println("American 的首都是", capital)
    } else {
        fmt.Println("American 的首都不存在")
    }
}

程式碼輸出結果:

France 首都是 巴黎
Italy 首都是 羅馬
Japan 首都是 東京
India  首都是 新德里
American 的首都不存在

www.runoob.com/

?謝謝

禁止 學習某地爬蟲,知乎爬蟲,CSDN 爬蟲。

本文,首發在 learnku 社群。

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

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

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

相關文章