第 10 節:複合型別 1:陣列

kuibatian發表於2019-12-03

1:陣列

01 陣列定義和使用

package main

import "fmt"

func main0101() {

    //  陣列定義
    // 陣列是一系列相同資料型別在記憶體中有序儲存的資料集合
    // var 陣列名 [元素個數]資料型別
    //定義了10個整型變數的陣列元素
    var arr [10]int

    //通過下標找到具體元素  陣列下標是從0開始的  到陣列元素個數-1位數值最大下標
    //陣列名[下標]  指向具體某一個元素
    arr[0] = 123
    arr[1] = 110
    arr[2] = 234

    arr[5] = 567
    //列印陣列
    fmt.Println(arr)

    fmt.Println(arr[0])
    fmt.Println(arr[1])
    fmt.Println(arr[2])

}

func main0102() {
    //在定義陣列時  依次為陣列元素賦值
    //var arr [10]int = [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
    //在定義陣列是 可以為部分元素賦值
    //var arr [10]int = [10]int{1, 2, 3, 4, 5}
    //在定義陣列時可以指定下標賦值
    //var arr [10]int = [10]int{1: 10, 4: 20, 6: 30}

    //定義時寫...可以根據元素個數賦值
    //var arr [4]int = [...]int{1, 2, 3, 4}
    arr := [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

    //len(陣列名)//計算陣列元素個數
    //fmt.Println(len(arr))

    //遍歷陣列元素值
    //for i:=0;i<len(arr);i++{
    //  fmt.Println(arr[i])
    //}

    //可以使用range 陣列名變數
    //i -》index 下標 v-》value 值
    for _, v := range arr {
        fmt.Println(v)
    }
    //fmt.Println(arr)
}

func main() {
    //陣列常見問題

    //i是一個變數  陣列元素個數定義一個是常量 或是常量表示式
    //i:=10
    //const i =10
    var arr [10]int = [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

    //var arr1 [10]int

    //arr[0]=123

    //陣列下標越界 最大值下標:len(arr)-1
    //arr[10]=321//err
    //arr[-1]=321//err

    //arr是陣列名  表示的是一個陣列
    //arr=123err

    //兩個陣列如果型別和元素個數相同可以賦值
    //arr1=arr

    fmt.Println(arr)
    //fmt.Println(arr1)

    //列印陣列資料型別
    fmt.Printf("%T\n", arr)
    //fmt.Printf("%T\n",arr1)

    //列印陣列地址
    //陣列名錶示整個陣列 陣列名對應的地址就是陣列第一個元素的地址
    fmt.Printf("陣列地址:%p\n", &arr)
    //fmt.Printf("陣列第一個元素地址:%p\n",&arr[0])
    //fmt.Printf("陣列第二個元素地址:%p\n",&arr[1])
    //fmt.Printf("陣列第三個元素地址:%p\n",&arr[2])

    //列印陣列所有元素地址
    for i := 0; i < len(arr); i++ {
        fmt.Printf("%p\n", &arr[i])
    }

}

02 十隻小豬稱體重

package main

import "fmt"

func main() {

    var arr [10]int

    //通過鍵盤為陣列元素賦值
    for i := 0; i < len(arr); i++ {
        fmt.Scan(&arr[i])
    }

    //通過迴圈遍歷陣列
    max := arr[0]
    for i := 1; i < len(arr); i++ {
        if arr[i] > max {
            max = arr[i]
        }
    }

    fmt.Println(max)

}

03 陣列逆置

將一個字串陣列的元素的順序進行反轉。{“我”,“是”,” 好人”} {“好人”,” 是”,” 我”}。第 i 個和第 length-i-1 個進行交換。

package main

import "fmt"

func main() {

    var arr [10]int = [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

    //陣列逆置
    i := 0            //最小值下標
    j := len(arr) - 1 //最大值下標

    //for 表示式1;表示式2;表示式3{}
    //for 返回值:=range 集合{}
    //for 條件 {}
    for i < j {
        //if (i >= j) {
        //  //跳出迴圈
        //  break
        //}

        //交換資料
        arr[i], arr[j] = arr[j], arr[i]
        //改變下標
        i++
        j--

    }

    fmt.Println(arr)

}

相關文章