iT邦幫忙

2023 iThome 鐵人賽

DAY 22
0

前言

這一站我們要來跟大家分享 =="陣列 (Array)"==,陣列也是程式語言中不可或缺的一環,現在很多案子都會需要使用到陣列,同時也因為有了陣列讓我們在寫程式碼時方便了不少

Go Array 介紹

接下來我會跟大家分享跟介紹,關於 Go Array 的 ==定義方式==、==陣列長度==、==陣列的型態==、==陣列元素==

Go Array 的定義方式

那 Go 的 Array 定義方式有兩種分別是 "var"":=",雖然這兩種寫法的方式不一樣,但是其實它們的用法都是大同小異,以下用程式碼來說明
這是 Var 的寫法

var array_name = [length]datatype{values}
or
var array_name = [...]datatype{values}

這是 := 的寫法

array_name := [length]datatype{values}
or
array_name := [...]datatype{values}

雖然寫法不一樣,但是一定都要有個 ==變數名稱 == 接著要有 ==陣列長度== 跟 ==陣列型別== 以及 ==陣列的值==

變數名稱 = [陣列長度] 陣列型別 {陣列的值}

大概就是這樣的概念,那你會好奇為什麼陣列長度會有 ==[...]== 這樣的奇異三點,這三點代表的是什麼呢?

Go Array 的陣列長度

陣列長度相信[4] 大家一定都很清楚的可以知道,這就是表示陣列中會有 4 個值,那 [...] 這三點會計算你的陣列有多少的值,也就是說你可以不用規定它的陣列長度只要輸入那三點即可,因為 Go 的陣列如果你給予的長度過少比陣列的值還少的話它就會回報錯誤,如以下所示

package main
import ("fmt")

func main() {
  var arr1 = [2]int{1,2,3}
  fmt.Println(arr1)
}

它的輸出結果為
https://ithelp.ithome.com.tw/upload/images/20231002/20161224H0uUyrCyV6.png

那如果例子對調,換成是陣列長度多於陣列的值的話,那它又會如何顯示呢?

package main
import ("fmt")

func main() {
  var arr1 = [4]int{1,2,3}
  fmt.Println(arr1)
}

顯示結果
https://ithelp.ithome.com.tw/upload/images/20231002/2016122496fWE6ovYx.png

沒錯,多的地方它直接補 0 進去陣列裡面
還有如果你想單純印出陣列的長度,你可以這麼做

package main
import ("fmt")

func main() {
  var arr1 = [5]string{"Volvo", "BMW", "Ford", "Mazda","God"}
  arr2 := [...]int{1,2,3,4,5,6,7,8,9}

  fmt.Println(len(arr1))
  fmt.Println(len(arr2))
}

輸出結果
https://ithelp.ithome.com.tw/upload/images/20231002/201612248TS5KHgyQ0.png

由此可知,只要輸出加個 len(arr1) 它就會印出該陣列的長度,那如果你想要同時印出陣列長度與陣列的值,那也沒有問題

package main
import ("fmt")

func main() {
  var arr1 = [5]string{"Volvo", "BMW", "Ford", "Mazda","God"}
  arr2 := [...]int{1,2,3,4,5,6,7,8,9}

  fmt.Println(len(arr1),arr1)
  fmt.Println(len(arr2),arr2)
}

輸出結果
https://ithelp.ithome.com.tw/upload/images/20231002/20161224dFL3M8OySX.png

Go Array 的陣列型別

package main
import ("fmt")

func main() {
  //int 整數
  var arr1 = [3]int{1,2,3}
  //string 字串
  var arr2 = [3]string{"Jack","Peter","Max"}
  //float64 浮點數
  var arr3 = [3]float64{1.2,3.4,5.6}
  //bool 布林值
  var arr4 = [2]bool{true,false}
  fmt.Println(arr1)
  fmt.Println(arr2)
  fmt.Println(arr3)
  fmt.Println(arr4)
}

以上就是 Go Array 陣列的各種型別

Go Array 的陣列元素

如果你想要直接取的該陣列的元素,該如何做呢? Go 語言的方式我們用程式碼來展示

package main
import ("fmt")

func main() {
  var arr1 = [3]int{1,2,3}
  fmt.Println(arr1[2])
}

輸出結果
https://ithelp.ithome.com.tw/upload/images/20231002/20161224W1IWrnkEi9.png

其實滿好懂得,就是印出陣列中的第二個元素

即便是陣列長度已經高過陣列的值,它也可以抓取到新的空值例如

package main
import ("fmt")

func main() {
  var arr1 = [4]int{1,2,3}
  fmt.Println(arr1[0])
  fmt.Println(arr1[1])
  fmt.Println(arr1[2])
  fmt.Println(arr1[3])
}

輸出結果
https://ithelp.ithome.com.tw/upload/images/20231002/20161224rdeWwpjtra.png

就像這個樣子,它也會自動把 0 補進去。
還有就是你也可以自己設定陣列元素的索引就像這個樣子

package main
import ("fmt")

func main() {
  arr1 := [5]int{1:10,3:40,2:20}
  fmt.Println(arr1)
}

輸出結果
https://ithelp.ithome.com.tw/upload/images/20231002/20161224joGBDOhrjo.png

程式解釋圖

 變數名稱 := [陣列長度]陣列型別{陣列索引位置a:陣列的值a, 陣列索引位置b:陣列的值b}

總結來說冒號左邊是陣列索引的位置,右邊是陣列的值

結語&預告

以上就是 Go 陣列以及我對於 Go 的陣列所學習到的知識,希望大家都可以有所收穫

下一站~ Go Output 輸出的奧秘

資料來源

W3C - Go Array
https://www.w3schools.com/go/go_arrays.php


上一篇
Day20-[第十九站 : Go Switch ? 要玩遊戲 ?(二)]<GOO~
下一篇
Day23-[第二十二站 : Go 輸出的奧秘,Output最後的波紋]<GOO~
系列文
關於我轉生變成 Go 初學者的這檔事30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言