go入门笔记四(数组、切片、map)

一、数组使用方法:

/*
 * @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)
	}
}

猜你喜欢

转载自blog.csdn.net/hkduan/article/details/123846156