摘要:以上是數(shù)組在語言中的定義方法,代表數(shù)組長度為,是數(shù)組中元素的類型,花括號中的是數(shù)組元素,切記元素個(gè)數(shù)與類型一定要與前面聲明的相符,否則會(huì)報(bào)錯(cuò)。數(shù)組元素的刪除在中刪除數(shù)組元素非常簡單,直接即可,以下代碼是刪除第二個(gè)元素。
數(shù)組的定義
用過PHP的同學(xué)應(yīng)該很清楚,無論多么復(fù)雜的數(shù)據(jù)格式都可以用數(shù)組來表達(dá),什么類型的數(shù)據(jù)都可以往里塞,它是工作必備的一部分,使用很簡單,易用程度簡直{{BANNED}}。
$array = [1, "name", ["sex" => "男"]];
在Go語言中就有所不同了,數(shù)組是一段固定長度的連續(xù)內(nèi)存區(qū)域,與C語言概念完全一致,在聲明數(shù)組時(shí),要先確定數(shù)組的長度,而且數(shù)組中的元素只能使用一種類型,心痛,我們再也不能隨心所欲的存儲數(shù)據(jù)了。
array := [3]int{1, 2, 3}
以上是數(shù)組在Go語言中的定義方法,[3]代表數(shù)組長度為3,int是數(shù)組中元素的類型,花括號中的是數(shù)組元素,切記元素個(gè)數(shù)與類型一定要與前面聲明的相符,否則會(huì)報(bào)錯(cuò)。除了這種方式,PHP中還有一種動(dòng)態(tài)賦值的方法,代碼如下。
$array = []; $array[0] = "name"; $array[1] = 1; print_r($array); //output Array ( [0] => name [1] => 1 )
Go語言也能做到,不過別想那么多,要存儲不同數(shù)據(jù)類型的元素就別想了(其實(shí)也不是沒有辦法,后續(xù)文章講解)。可以通過var聲明一個(gè)數(shù)組,數(shù)組的長度和類型提前定義好,接下來就可以根據(jù)數(shù)組下標(biāo)來賦值了,可以不必為每個(gè)下標(biāo)賦值,但是切記下標(biāo)不能越界,否則會(huì)報(bào)錯(cuò)。
var array [3]string array[0] = "name" array[1] = "sex" fmt.Print(array) //output [name sex ]
每次聲明數(shù)組時(shí)都要數(shù)一下元素個(gè)數(shù)寫在中括號里也太雞肋了,這點(diǎn)Go不可能想不到,果然,可以用...方法來省略掉中括號的數(shù)值,這樣編譯器會(huì)自動(dòng)確定數(shù)組中的元素。
array := [...]string{"a", "b", "c", "d"} fmt.Print(array) //output [a b c d]數(shù)組的遍歷
數(shù)組已經(jīng)定義了,來看一下怎么遍歷,在PHP中通過foreach進(jìn)行遍歷。
$array = ["a", "b", "c", "d"]; foreach($array as $k => $v) { echo $v; } //output abcd
Go的寫法很類似,通過range進(jìn)行遍歷,只是語法看起來有點(diǎn)怪怪的。
array := [...]string{"a", "b", "c", "d"} for k, v := range array { fmt.Print(k, v) } //output 0a1b2c3d
在Go中沒有使用的變量在編譯時(shí)會(huì)報(bào)錯(cuò),那遍歷時(shí)的k不見得會(huì)用到,那怎么解決變量k未被使用的問題呢?其實(shí)可以使用Go內(nèi)置的符號_來替換掉變量k,它的意思是把當(dāng)前賦的值丟棄掉。
array := [...]string{"a", "b", "c", "d"} for _, v := range array { fmt.Print(v) } //output abcd數(shù)組的截取
PHP中對數(shù)組截取通過array_slice函數(shù),以下代碼是從數(shù)組的第二個(gè)元素開始,截取兩個(gè)元素。
$array = [1, 2, 3, 4, 5]; print_r(array_slice($array, 1, 2)); //output Array ( [0] => 2 [1] => 3 )
在Go中更簡單一些,可以直接取出第二到第四個(gè)元素之間的數(shù)據(jù),值得注意的是,取出來的已經(jīng)不是數(shù)組了,叫做切片,記住了,從數(shù)組切出來的部分就叫切片,數(shù)組與切片最簡單的區(qū)別就是:數(shù)組需要明確指定大小,切片不需要,數(shù)組是值傳遞,切片是地址傳遞。不過目前還是把它當(dāng)數(shù)組好了。
array := [...]int{1, 2, 3, 4, 5} fmt.Print(array[1:3])數(shù)組的追加
在PHP中為數(shù)組添加一個(gè)新元素使用array_push函數(shù)。
$array = [1, 2, 3, 4, 5]; array_push($array, 6); print_r($array); //output Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 )
在Go中使用append函數(shù),注意這里實(shí)際上是對切片的添加而不是數(shù)組。
array := []int{1, 2, 3, 4, 5} array = append(array, 6) fmt.Print(array) //output [1 2 3 4 5 6]數(shù)組元素的刪除
在PHP中刪除數(shù)組元素非常簡單,直接unset即可,以下代碼是刪除第二個(gè)元素。
$array = [1, 2, 3, 4, 5]; unset($array[1]); print_r($array); //output Array ( [0] => 1 [2] => 3 [3] => 4 [4] => 5 )
Go中比較特別,它并沒有提供原生的刪除方法,只能利用切片的特性,我們定義刪除的元素索引為1,然后將1前面的元素與1后面的元素拼接起來,就過濾掉了第1個(gè)元素,感覺這種實(shí)現(xiàn)方式有點(diǎn)投機(jī),不知道為什么不提供函數(shù)來操作。
index := 1 array := []int{1, 2, 3, 4, 5} array = append(array[:index], array[index+1:]...) fmt.Print(array) //output [1 3 4 5]
以上就是PHP與Go在數(shù)組上的區(qū)別,感興趣的同學(xué)可以自行了解或關(guān)注我后續(xù)的文章。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/31699.html
摘要:前言作為一名程序員我感到榮幸。但在時(shí)代不斷的變遷中,要具備足夠的知識才可生存。那就從語言學(xué)起把。希望看到本篇文章的你可以對有一個(gè)基本的認(rèn)識。本系列文章與我自己學(xué)習(xí)語言的方式去描述。以代碼與代碼的對比加以區(qū)分理解。 showImg(https://segmentfault.com/img/bVbiKHc?w=1500&h=1000); 前言 作為一名PHP程序員,我感到榮幸。但在時(shí)代不斷...
摘要:而且數(shù)組是定長的,而切片可以調(diào)整長度。也就是說類型的值可以用于表示任意語言類型的值。下劃線讓編譯器接受這類導(dǎo)入,并且調(diào)用對應(yīng)包內(nèi)的所有代碼文件里定義的函數(shù)。結(jié)構(gòu)體可以當(dāng)做是一種數(shù)據(jù)類型一般都默認(rèn)函 緣起 之前下載視頻用的you-get,但是b站一直下不了,優(yōu)酷也經(jīng)常出問題,所以接觸到lulu https://github.com/iawia002/Lulu 這個(gè)也是基于you-get ...
摘要:與純占位符相對應(yīng),非純占位符的切片是非空列表,對它進(jìn)行操作賦值與刪除,將會(huì)影響原始列表。不同位置的替換非等長替換刪除元素切片占位符可以帶步長,從而實(shí)現(xiàn)連續(xù)跨越性的替換或刪除效果。 2018-12-31 更新聲明:切片系列文章本是分三篇寫成,現(xiàn)已合并成一篇。合并后,修正了一些嚴(yán)重的錯(cuò)誤(如自定義序列切片的部分),還對行文結(jié)構(gòu)與章節(jié)銜接做了大量改動(dòng)。原系列的單篇就不刪除了,畢竟也是有單獨(dú)成...
摘要:小白前端一枚,最近在研究,記錄自己學(xué)習(xí)過程中的一些筆記,以及自己的理解。此外,結(jié)構(gòu)體也支持嵌套。在函數(shù)聲明時(shí),在函數(shù)名前放上一個(gè)變量,這個(gè)變量稱為方法的接收器,一般是結(jié)構(gòu)體類型的。 小白前端一枚,最近在研究golang,記錄自己學(xué)習(xí)過程中的一些筆記,以及自己的理解。 go中包的依賴管理 go中的切片 byte 和 string go中的Map go中的struct結(jié)構(gòu)體 go中的方...
閱讀 2624·2021-11-18 10:07
閱讀 1083·2021-08-03 14:04
閱讀 726·2019-08-30 13:08
閱讀 2579·2019-08-29 15:33
閱讀 1087·2019-08-29 14:07
閱讀 2985·2019-08-29 14:04
閱讀 1435·2019-08-29 11:19
閱讀 1144·2019-08-29 10:59