前一篇说到了go的变量、常量和基本数据类型,接下来继续说一下go的其他内置类型:数组、切片(slice)和集合(map)
一,数组
go和java中肯定都有数组了,只不过在定定义上和定义变量类似,把类型放到了后边(还是觉得很难受有没有?)
首先对比一下定义:
//java:
int[] arr; //没有初始化
arr = new int[1]{}; //初始化长度为1的数组
int[] arr1 = new int[]{1,2,3}; //初始化三个值
//go:
var arr [1]int //同样
arr = [1]int{} //初始化长度为1的数组
arr1 := [3]int{1,2,3} //同样初始化三个值
arr2 := [...]int{1,2,3} //同样初始化三个值
我们看到不光数组类型放到了变量后边,类型名称都放到了"[]"后边,和java完全是颠倒的(真的好别扭);
注意,在初始化arr1的时候,go的[]中指定了3(也可以不写,但是不写就是切片了,之后会说到),但是在java中的[]中是不能指定的,否则会报错。
再有,在go初始化arr2的时候,[]中写额是“...”,三个点表示自动计算长度,用户用户保持长度的正确性,但是这种只能是在静态初始化的时候(指定数组内容),如下也会报错的:var arr2 [...]string //报错:use of [...] array outside of array literal
数组在使用上也都一样,都是使用“[]”来对元素进行操作:
var