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)
}