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)
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端段

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值