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

  

 

posted @ 2026-06-04 17:35  烟雨楼台,行云流水  阅读(5)  评论(0)    收藏  举报