一、数组使用方法:
/*
* @Author: duan
* @Date: 2022-05-06 10:00:22
* @LastEditors: duan
* @LastEditTime: 2022-05-06 12:25:48
* @Description: file content
*/
package main
// 求数组[1,3,5,7,8]所有元素的和
import "fmt"
func main() {
// var a0 []int = []int{11, 22, 33} //定义数组
// for i := 0; i < len(a0); i++ {
// fmt.Printf("a[%v]=%v\n", i, a0[i])
// }
// // 简写
var _ = [...]int{
1, 3, 5, 7, 8} //_占位符
// a1 := [...]int{1, 3, 5, 7, 8} //简写定义数组
// sum := 0
// for _, v := range a1 { // 简写for循环,_占位符,代表没有引用的i,
// sum = sum + v
// }
// fmt.Println(a0, sum)
// 二维数组 定义和遍历
twoDimensionalArray := [][]int{
{
1, 2, 3, 4},
{
2, 3, 4, 6, 7},
{
3, 2},
}
for i, v := range twoDimensionalArray {
for i2, v2 := range v {
fmt.Printf("a[%v][%v]=%v\t", i, i2, v2)
}
fmt.Println()
}
}
二、切片,Go 语言切片是抽象数组,常用于对数组的引用。如果不想引用数组,而是从系统底层开辟内存空间,就用make( []int, len, cap )
1.与数组相比切片的长度是不固定的,append(1,2,…)可以追加元素,在追加时可能使切片的容量增大,并且创建新数组,丢弃原数组的引用
2.var a [] string
3.默认值是nil,没有开辟内存空间
4.copy(arr1, fromarr2) 能复制多少就复制多少
5.string底层是byte,3个byte发一个中文
package main //表示main.go所在的包是main,在go中,每个文件必须归属一个包
import (
"fmt" //导入包,format的缩写
)
func main() {
// make([]int,初始大小,最大容量) 最大容量可以省略
// a := make([]int, 10) //10是初始长度
// s := []int{1, 2, 3}
// fmt.Println(a, s)
numbers := []int{
0, 1, 2, 3, 4, 5, 6, 7, 8}
fmt.Println("numbers[:3] ==", numbers[:3])
numbers1 := numbers[2:5] //切片截 [lower-bound:upper-bound]
fmt.Println("numbers[:3] ==", numbers1)
numbers2 := make([]int, 0, 2)
numbers2 = append(numbers2, 2, 3, 4, 6) //添加
fmt.Println("numbers[:3] ==", numbers2)
numbers3 := make([]int, len(numbers)) //创建和numbers一样长度切片
copy(numbers3, numbers) //从numbers copy to num3
fmt.Println("numbers[:3] ==", numbers3)
// printSlice(numbers)
}
func printSlice(x []int) {
fmt.Printf("len=%d cap=%d slice=%v\n", len(x), cap(x), x)
}
三、map
package main
import "fmt"
// map不能用len(),只有一种遍历方法 for range
func main() {
m0 := map[string]string{
"凌晨": "睡觉",
}
m0["早上"] = "锻炼"
m0["中午"] = "午睡"
m0["晚上"] = "下班"
for key, value := range m0 {
fmt.Println(key, value)
}
// m0 = nil //清空
v := m0["早上"]
fmt.Println("m0=", v)
m1 := make(map[int]string)
m1[0] = "yangjie"
val, ok := m1[0]
fmt.Println(val, ok)
m2 := map[string]int{
"yj": 123,
"lxf": 23,
}
delete(m2, "yj")
fmt.Println(m2)
for k, v := range m2 {
fmt.Println(k, v)
}
}