四种初始化数组的方式
package main
import(
"fmt"
)
func main(){
//声明数组
// var arr [5]float64 等同于下面
arr := [5]float64{}
for i := 0; i < len(arr); i++{
fmt.Printf("请输入第%v个成绩:",i+1)
fmt.Scanln(&arr[i])
}
fmt.Println("arr=",arr)
//四种初始化数组的方式
var numArr01 [3]int = [3]int{1,2,3}
fmt.Println("numArr01 = ",numArr01)
var numArr02 = [3]int{4,5,6}
fmt.Println("numArr02 = ",numArr02)
var numArr03 = [...]string{0:"张三",1:"李四",2:"王五"}
fmt.Println("numArr03 = ",numArr03)
//如果长度不确定那么就用 ... 来表示长度
numArr04 := [...]string{1:"狂徒",0:"法外",2:"张三"}
fmt.Println("numArr04 = ",numArr04)
/*
结果
numArr01 = [1 2 3]
numArr02 = [4 5 6]
numArr03 = [张三 李四 王五]
numArr04 = [法外 狂徒 张三]
*/
}
for index,value := range(array) 循环基础用户
package main
import(
"fmt"
)
func main(){
numArr := [...]string{1:"狂徒",0:"法外",2:"张三"}
for index,value := range(numArr){
fmt.Printf("index = %d value = %v\n",index,value)
}
/*
index = 0 value = 法外
index = 1 value = 狂徒
index = 2 value = 张三
*/
}
引用值改变数组里面的值
package main
import(
"fmt"
)
//使用引用传参
//[3] 这个长度必须是数组的长度 不能多和少也不能...否则会报错
func test01(arr *[3]string){
//下面也需要指针标识
(*arr)[0] = "狂徒1"
}
func main(){
numArr1 := [...]string{1:"狂徒",0:"法外",2:"张三"}
test01(&numArr1)
fmt.Println(numArr1)
//[狂徒1 狂徒 张三]
}
数组4个案例
package main
import(
"fmt"
"time"
"math/rand"
)
func main(){
//创建一个byte类型的26元素的数组,分别放置'A'-'Z'。
//使用for循环访问所有元素并打印出来。提示:字符数据运算'A'+1 => 'B'
myChars := [26]byte{}
for i := 0; i < 26; i++ {
myChars[i] = 'A' + byte(i)
}
for i := 0; i < 26; i++{
fmt.Printf("%c",myChars[i])
}
fmt.Println()
//结果:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
//请求出一个数组的最大值,并得到对应的下标
resArr := [6]int{12,18,26,30,54,55}
//假设第一个下标的值为最大值
sumMax := resArr[0]
sumSubscript := 0
//使用for 循环进行比对 大于第一个数值的进行调换
for i := 1; i < len(resArr); i++{
if resArr[0] < resArr[i] {
sumMax = resArr[i]
sumSubscript = i
}
}
fmt.Printf("sumMax = %v sumSubscript = %v\n",sumMax,sumSubscript)
//sumMax = 55 sumSubscript = 5
//请求出一个数组的和 和平均值 使用for-range
sumArr := [6]int{20,25,30,11,11,13}
var sumAnd int = 0
for _, value := range sumArr {
sumAnd += value
}
//fmt.Sprintf("%.2f",18.3333333333333) 小数点四舍五入
sumAve := fmt.Sprintf("%.2f",float64(sumAnd) / float64(len(sumArr)))
fmt.Printf("sumArr的和=%v sumArr的平均值=%v\n",sumAnd,sumAve)
//结果:sumArr的和=110 sumArr的平均值=18.33
//随机生成五个数,并将其反转打印
//1.先随机生成5个数字
var intArr [5]int
len := len(intArr)
rand.Seed(time.Now().UnixNano())
for i := 0; i < len; i++{
intArr[i] = rand.Intn(100)
}
fmt.Println("正常数字:",intArr)
//2.将数组中的数进行反转, 第一个数与最后一个数进行颠倒,以此类推
//交换的次数 / 2
for i := 0; i < len / 2; i++{
sun := intArr[i] //第一个数 赋给一个变量
intArr[i] = intArr[len - i - 1)] //最后一个数 赋值给第一个下标
intArr[len - i - 1] = sun //第一个数 赋给最后一个下标
}
fmt.Println("反转数字:",intArr)
//正常数字: [26 77 84 44 45]
//反转数字: [45 44 84 77 26]
}