栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Go语学习笔记 - Slice、Map | 从零开始Go语言

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Go语学习笔记 - Slice、Map | 从零开始Go语言

目录

1、Slice切片

2、Map

小结


学习笔记,写到哪是哪。

1、Slice切片

Slice和java中的ArrayList类似,Go语言数组长度不可改变,Slice的长度不固定,可追加元素。

定义方式可以是:

var identifier []type

也可以使用make函数

var slice1 []type = make([]type, len)

样例代码如下

package main

import "fmt"

//切片
func test_slice() {
	a := [...]int{1, 2, 3}
	b := a[:]
	fmt.Printf("a:%T,b%Tna=%v,b=%vn", a, b, a, b)
	c := a[:2]
	fmt.Println(c)
	s := make([]string, 0)
	s = append(s, "haha")
	s = append(s, "haha1", "haha2")
	fmt.Println(s, len(s), cap(s))

	printSlice := func(x []int) { fmt.Printf("len=%d,cap=%d,slice=%vn", len(x), cap(x), x) }
	var d []int
	if d == nil {
		printSlice(d)
	}

	copyS := make([]string, cap(s)*2)
	copy(copyS, s)
	fmt.Println(copyS, s)

}

func main() {
	test_slice()
}

执行结果

a:[3]int,b[]int
a=[1 2 3],b=[1 2 3]
[1 2]                                   
[haha haha1 haha2] 3 3                  
len=0,cap=0,slice=[]                    
[haha haha1 haha2   ] [haha haha1 haha2]

注意

1、 可以看出a是数组,b是将a数组转为切片。

2、c是a数组的索引为0到2-1的元素,作为切片。

3、可以使用copy函数,进行切片元素拷贝。

4、使用len()、cap()内置函数,可以获取切片的长度以及最大容量。

5、使用append()函数可以对切片元素进行追加。

2、Map

和java中的map类似,在创建map的时候也需要明确键值类型。

定义方式:

var map_variable map[key_data_type]value_data_type
map_variable := make(map[key_data_type]value_data_type)

样例代码如下

package main

import "fmt"

func testMap() {
	var a = make(map[string]int)
	a["小黄"] = 10
	a["小红"] = 18
	for s, i := range a {
		fmt.Println(s, i)
	}
	b, ok := a["小兰"]
	fmt.Println(b, ok)
	a["小花"] = 21
	delete(a, "小黄")
	fmt.Println(a)
}

func main() {
	testMap()
}

执行结果

小黄 10
小红 18
0 false             
map[小红:18 小花:21]

注意

1、在获取map某个值的时候,会返回两个返回值,第二个返回值为bool类型,如果不存在该键值对,则为false。

2、可以使用delete()函数进行键值对删除。

小结

使用方式也是相对严谨的,都是在工作中比较常规的数据类型。

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/821689.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号