Go(3[數組])

數組:var 變量名[len]type

使用場景:

  • 固定需求的時候,使用數組,不可超出指定長度

  • 長度也是數組類型的一部分

  • 底層內存空間是連續的

  • 用來存儲常量

  • 數組是一種特殊的字典.....

  • 數組寫入,賦值的方式, 數組[索引]=值

  • 數組是值類型,如果copy成另外一個數組,那修改這個數組,原來的數組並不會改變

數組初始化:

    定義:    var 變量名 [len]type

  • 第一種: 

    • var a[5] int = [5]int{1,2,3,4,5}


  • 第二種:

    • ceshi :=[5]int{1,3,4,5}
  • 第三種

    • var b = [5]int{1,3}
  • 第四種(當不可知長度的時候使用 ...),需要注意的是在切片中也有這種用法,不過含義不一樣

    • var c = [...]int{1,3,4,5,10}

 

示例:

var a[5]int

var a[5]string

var a[5]float32

var a[5]bool

訪問數組中的元素:

  使用下標訪問: a[0]訪問第一個元素。長度爲5的數組訪問如下: a[0], a[1], a[2], a[3], a[4]

數組中的長度:

    var a[10]int

    lengh :=len(a)

示例代碼拆分部分:

  1. 數組循環:

    1. 格式化%p,用來打印內存地址

    2. & 符號,取變量地址

    3. 儘量用變量來循環

    4. var a [10]int
      
      for i :=0;i<len(a);i++{
         fmt.Printf("%p\n",&a[i])
      }
    5. length:=len(a) 數組長度


  2. 數組初始化:

    1. 定義數組的時候,默認值都是0

    2. 產生另外一個數組,修改這個數組,並不會對原數組進行修改

    3. func test2()  {
         var a[5]int  = [5]int {1,2,3,4,5}
         var b[5] int
         b = a
         fmt.Printf("%v\n",b)
         b[0] = 200
         fmt.Printf("%v\n",b)
         fmt.Printf("%v\n",a)
      
      }
  3. 數組定義:

    1. 聲明數組的時候,需要定義長度和類型!!!

      1. 寫法:變量[長度]類型 = [長度]類型[值]

    2. 數組賦值:指定下標來指定元素賦值

    3. %#以go的方式打印

    4. var d [5]string = [5]string{1:"abc",4:"zcq"}
      //%#  以go的方式打印!!!
      fmt.Printf("%#%v\n",d)
      
      fmt.Printf("%v\n",a,b,c)
  4. 二維數組

    1. var a[8][2]int

    2. func test4()  {
         //二維數組
         var a[4][2]int
         for i:=0;i<4;i++{
            for j:=0;i<2;j++{
               a[i][i] = (i+1) *(j+1)
            }
         }
         for i:=0;i<4;i++{
            for j:=0;i<2;j++{
               fmt.Printf("%d",a[i][j])
            }
            fmt.Println()
         }
      }
  5. 數組賦值:隨機數字放入數組

    1. 切記:go是強類型語言,所以類型如果不一樣,是編譯不過去的

    2. 使用隨機數模塊,使用time模塊

      1. r := rand.New(rand.NewSource(time.Now().Unix())
    3. func test5()  {
         //隨機數字放入數組
         r := rand.New(rand.NewSource(time.Now().Unix()))
         var five [100]int
         //數組 通過索引來賦值
         for i:=0;i<len(five);i++{
            //賦值操作
            five[i]=r.Int()
            //取值操作
            fmt.Printf("%d\n",five[i])
         }
         fmt.Printf("%d\n",five)
      }
  6. 數組賦值:隨機字符串放入數組

    1. go裏面是utf-8編碼

    2. Sprintf 格式化並返回格式化後的字符串,可直接賦值!!!

    3. func test6()  {
         
         var a [100]string
      
         var b string = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
      
         for i:=0;i<len(a);i++{
            var str string
            for j:=0;j<len(b);j++{
               index :=rand.Intn(len(b))
               //Sprintf 格式化並返回格式化後的字符串
               str = fmt.Sprintf("%s%c",str,b[index])
            }
            a[i] = str
            fmt.Printf("a[%d]=%s\n",i,a[i])
      
         }
      }



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章