go 基础之数组
数组长度是他的类型部分
package main
import (
"fmt"
)
func main(){
var a1 [3]bool
var a2 [4]bool
//数组的初始化;如果不初始化,默认元素都是0值
fmt.Println(a1,a2)
a1[0]=true
a1[1]=true
a1[2]=false
a2[0]=true
a2[1]=true
a2[2]=true
a2[3]=false
fmt.Println(a2,a1)
}
方式2 带遍历
package main
import (
"fmt"
//"slices"
)
func main(){
var a1 [3]bool
var a2 [4]bool
//数组的初始化;如果不初始化,默认元素都是0值
fmt.Println(a1,a2)
a1[0]=true
a1[1]=true
a1[2]=false
a2[0]=true
a2[1]=true
a2[2]=true
a2[3]=false
fmt.Println(a2,a1)
a100:=[5]int{1,3,56,89,7}
for v,i:=range a100{
fmt.Printf("a100[%d]=%d \n",v,i)
}
fmt.Println()
a5 :=[...]int{3,5,8,2}
for v,i:=range a5{
fmt.Printf("a5[%d]=%d \n",v,i)
}
fmt.Println()
a7 :=[5]int{0:2,4:8}
for v,i:=range a7{
if v<len(a7){
fmt.Printf("a7[%d]=%d \t",v,i)
}else{
fmt.Printf("a7[%d]=%d \n",v,i)
}
}
}
执行结果
PS D:\golang\goproject\src\lnhgo> go run day2\demo06\main.go
[false false false] [false false false false]
[true true true false] [true true false]
多维数组
package main
import(
"fmt"
)
func main(){
var a11 = [...][3]int{{5,7},{7,75,8}}
var a12 [5][2]int
a12=[5][2]int{
{2,8},
{5,8},
{7,4},
{9,3},
{8,12},
}
for i,v:=range a11{
for x,j:=range v{
fmt.Printf("a11[%d][%d]=%d\t",i,x,j)
}
fmt.Println()
}
for i,v:=range a12{
for x,j:=range v{
fmt.Printf("a12[%d][%d]=%d\t",i,x,j)
}
fmt.Println()
}
}
执行结果
PS D:\golang\goproject\src\lnhgo> go run day2\demo07\main.go
a11[0][0]=5 a11[0][1]=7 a11[0][2]=0
a11[1][0]=7 a11[1][1]=75 a11[1][2]=8
a12[0][0]=2 a12[0][1]=8
a12[1][0]=5 a12[1][1]=8
a12[2][0]=7 a12[2][1]=4
a12[3][0]=9 a12[3][1]=3
a12[4][0]=8 a12[4][1]=12
使用数据计算
package main
import(
"fmt"
)
func main(){
a1 := [...]int{1,3,5,7,8}
for i,v:=range a1{
t := 8 -v
for x:=i+1; x<len(a1);x++{
if t ==a1[x]{
fmt.Println(i)
fmt.Println(x)
}
}
}
}
配合map 实现(Go 提供了一个“安全取值方式”:value, ok := map[key])
package main
import(
"fmt"
)
func main(){
a1 := [...]int{1,3,5,7,8}
m := make(map[int]int)
for i, v := range a1 {
target := 8 - v
/*
if idx, ok := m[target]; ok {
fmt.Println(idx, i)
}
它等价于三步:
第一步:从 map 里取值
idx := m[target]
但问题是:map 里可能没有这个 key。
第二步:判断这个 key 在不在 map 里
Go 提供了一个“安全取值方式”:
value, ok := map[key]
value:取到的值
ok:布尔值
true 👉 key 存在
false 👉 key 不存在
第三步:组合成 if
if idx, ok := m[target]; ok
*/
if idx, ok := m[target]; ok { //根据map key查vlue 并赋值
fmt.Println(idx, i)
}
m[v] = i
}
}
PS D:\golang\goproject\src\lnhgo> go run day2\demo07\main.go
0
3
1
2
草都可以从石头缝隙中长出来更可况你呢

浙公网安备 33010602011771号