GO-数组、切片、字典

package main

import "fmt"

//数组
func f1(){
	//Go语言中数组是值类型,大小固定,数组之间的赋值是值拷贝,而不是地址的拷贝
	//切片是引用类型,大小可变
	var arr1 [3]int = [3]int{1,2,3}
	arr2 := [3]int{4,5,6}
	arr3 := [...]int{7,8,9}

	arr4 := [3]int{}
	arr5 := [...]int{}

	arr6 := [9]int{5:3}
	arr7 := [9]byte{5:'a'}
	arr8 := [9]rune{5:'淦'}
	arr9 := [9]string{2:"d", 5:"a"}

	fmt.Println(arr1, arr2, arr3, arr4, arr5, arr6, arr7, arr8, arr9)
	for i:=0;i<3;i++{
		fmt.Println(arr1[i])
	}
    for index,value := range arr1{
    	fmt.Println(index, value)
	}
}

//切片
func f2() {
	//通过数组构造切片
	//在切片时,若不指定第三个数,那么切片终止索引会一直到原数组的最后一个数。而如果指定了第三个数,那么切片终止索引只会到原数组的该索引值。
	arr := [6]int{1, 2, 3, 4, 5, 6}
	slice1 := arr[1:3]
	slice2 := arr[1:3:4]
	fmt.Println(arr, slice1, slice2)
	fmt.Printf("%T %T %T\n", arr, slice1, slice2)
	fmt.Printf("%d %d\n", len(arr), cap(arr))
	fmt.Printf("%d %d\n", len(slice1), cap(slice2))
	fmt.Printf("%d %d\n", len(slice1), cap(slice2))

	var slice3 []int				//定义一个空切片
	var slice4 = []int{1, 2, 3}		//定义一个切片并初始化
	var slice5 = make([]int, 2, 10)	//make函数构造切片
	slice6 := []int{4:2}			//推导申明写法
	fmt.Println(slice3, slice4, slice5, slice6)
	fmt.Printf("%d %d\n", len(slice3), cap(slice3))
	fmt.Printf("%d %d\n", len(slice4), cap(slice4))
	fmt.Printf("%d %d\n", len(slice5), cap(slice5))
	fmt.Printf("%d %d\n", len(slice6), cap(slice6))

	for _,value := range slice6{
		fmt.Println(value)
	}

	//切片操作...
	slice7 := []int{1, 2}
	fmt.Printf("%v,%T,%d,%d\n", slice7, slice7, len(slice7), cap(slice7))
	slice7 = append(slice7, 3)
	fmt.Printf("%v,%T,%d,%d\n", slice7, slice7, len(slice7), cap(slice7))
	slice7 = append(slice7, []int{4,5}...)
	fmt.Printf("%v,%T,%d,%d\n", slice7, slice7, len(slice7), cap(slice7))
}

//字典
func f3(){
	var dict1 map[string]int = map[string]int{"english":80, "chinese":90}
	dict2 := map[string]int{"english":80, "chinese":90}
	dict3 := make(map[string]int)
	dict3["english"] = 80
	dict3["chinese"] = 90
	dict3["math"] = 100
	delete(dict3, "english")

	fmt.Printf("%v,%T,%d\n", dict1, dict1, len(dict1))
	fmt.Printf("%v,%T,%d\n", dict2, dict2, len(dict2))
	fmt.Printf("%v,%T,%d\n", dict3, dict3, len(dict3))

	//判断key是否存在
	math,ok := dict3["math"]
	fmt.Println(math, ok)
	other,ok := dict3["other"]
	fmt.Println(other, ok)
	if english,ok := dict3["english"];ok{
		fmt.Println(english,"key存在")
	}else{
		fmt.Println(english, "key不存在")
	}

	//遍历字典
	for key,value := range dict3{
		fmt.Println(key, value)
	}

	for _,value := range dict3{
		fmt.Println(value)
	}
}

func main(){
	f3()
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值