<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      PHP轉Go系列:數組與切片

      數組的定義

      用過PHP的同學應該很清楚,無論多么復雜的數據格式都可以用數組來表達,什么類型的數據都可以往里塞,它是工作必備的一部分,使用很簡單,易用程度簡直變態。

      $array = [1, 'name', ['sex' => '男']];
      

      在Go語言中就有所不同了,數組是一段固定長度的連續內存區域,與C語言概念完全一致,在聲明數組時,要先確定數組的長度,而且數組中的元素只能使用一種類型,心痛,我們再也不能隨心所欲的存儲數據了。

      array := [3]int{1, 2, 3}
      

      以上是數組在Go語言中的定義方法,[3]代表數組長度為3,int是數組中元素的類型,花括號中的是數組元素,切記元素個數與類型一定要與前面聲明的相符,否則會報錯。除了這種方式,PHP中還有一種動態賦值的方法,代碼如下。

      $array = [];
      $array[0] = 'name';
      $array[1] = 1;
      print_r($array);
      
      //output
      Array
      (
          [0] => name
          [1] => 1
      )
      

      Go語言也能做到,不過別想那么多,要存儲不同數據類型的元素就別想了(其實也不是沒有辦法,后續文章講解)。可以通過var聲明一個數組,數組的長度和類型提前定義好,接下來就可以根據數組下標來賦值了,可以不必為每個下標賦值,但是切記下標不能越界,否則會報錯。

      var array [3]string
      array[0] = "name"
      array[1] = "sex"
      fmt.Print(array) //output [name sex ]
      

      每次聲明數組時都要數一下元素個數寫在中括號里也太雞肋了,這點Go不可能想不到,果然,可以用...方法來省略掉中括號的數值,這樣編譯器會自動確定數組中的元素。

      array := [...]string{"a", "b", "c", "d"}
      fmt.Print(array) //output [a b c d]
      

      數組的遍歷

      數組已經定義了,來看一下怎么遍歷,在PHP中通過foreach進行遍歷。

      $array = ["a", "b", "c", "d"];
      foreach($array as $k => $v) {
      	echo $v;
      }
      //output abcd
      

      Go的寫法很類似,通過range進行遍歷,只是語法看起來有點怪怪的。

      array := [...]string{"a", "b", "c", "d"}
      for k, v := range array {
      	fmt.Print(k, v)
      }
      //output 0a1b2c3d
      

      在Go中沒有使用的變量在編譯時會報錯,那遍歷時的k不見得會用到,那怎么解決變量k未被使用的問題呢?其實可以使用Go內置的符號_來替換掉變量k,它的意思是把當前賦的值丟棄掉。

      array := [...]string{"a", "b", "c", "d"}
      for _, v := range array {
      	fmt.Print(v)
      }
      //output abcd
      

      數組的截取

      PHP中對數組截取通過array_slice函數,以下代碼是從數組的第二個元素開始,截取兩個元素。

      $array = [1, 2, 3, 4, 5];
      print_r(array_slice($array, 1, 2));
      
      //output
      Array
      (
          [0] => 2
          [1] => 3
      )
      

      在Go中更簡單一些,可以直接取出第二到第四個元素之間的數據,值得注意的是,取出來的已經不是數組了,叫做切片,記住了,從數組切出來的部分就叫切片,數組與切片最簡單的區別就是:數組需要明確指定大小,切片不需要,數組是值傳遞,切片是地址傳遞。不過目前還是把它當數組好了。

      array := [...]int{1, 2, 3, 4, 5}
      fmt.Print(array[1:3])
      

      數組的追加

      在PHP中為數組添加一個新元素使用array_push函數。

      $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函數,注意這里實際上是對切片的添加而不是數組。

      array := []int{1, 2, 3, 4, 5}
      array = append(array, 6)
      fmt.Print(array) //output [1 2 3 4 5 6]
      

      數組元素的刪除

      在PHP中刪除數組元素非常簡單,直接unset即可,以下代碼是刪除第二個元素。

      $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個元素,感覺這種實現方式有點投機,不知道為什么不提供函數來操作。

      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在數組上的區別,感興趣的同學可以自行了解或關注我后續的文章。

      posted @ 2019-06-12 21:57  MARIOOW  閱讀(1642)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 精品无码人妻| 国产99久久精品一区二区| 日韩亚洲国产激情一区二区 | 国产精品色三级在线观看| 久久精品国产亚洲av忘忧草18| 午夜免费福利小电影| 色综合热无码热国产| 337p粉嫩大胆噜噜噜| 中文字幕亚洲精品人妻| 国产成人亚洲综合图区| 国产午夜福利免费入口| 在线日韩日本国产亚洲| 久久精品国产亚洲精品色婷婷| 人妻中文字幕一区二区视频| 久久99热只有频精品8| 亚洲性图日本一区二区三区| 亚洲 制服 丝袜 无码| 蜜桃麻豆www久久囤产精品| 蜜芽久久人人超碰爱香蕉| 我国产码在线观看av哈哈哈网站| 青草热在线观看精品视频| 欧美xxxxhd高清| 亚洲制服无码一区二区三区 | 人妻放荡乱h文| 亚洲av永久无码精品天堂久久| 精品人妻中文字幕av| 在线日韩日本国产亚洲| 亚洲乱码日产精品一二三| 好紧好爽午夜视频| 无码人妻丝袜在线视频| 国产在线自拍一区二区三区 | 成人免费亚洲av在线| 成a人片亚洲日本久久| 熟女在线视频一区二区三区| 免费现黄频在线观看国产| 免费无码又爽又刺激高潮虎虎视频 | 国产不卡精品视频男人的天堂| 少妇人妻偷人偷人精品| 91精品国产老熟女在线| 东京热无码国产精品| 久久精品国产九一九九九|