Go中string的特殊用法[…]string
最近在学习Go语言中遇到了string特殊的一种用法,记录一下,直接上代码,如有错误,请朋友们指出
import "fmt"
func Test02() {
var str = [...]string{
1: "Hello",
3: "World",
5: "My",
6: "Name",
7: "is",
8: "Conan",
}
fmt.Println(str)
for i,v := range str {
fmt.Println(i, ":", v)
}
fmt.Println(str[1])
fmt.Println(str[2])
fmt.Println(str[5])
fmt.Println("len is ", len(str))
}
这样定义之后,初看上去有点想字典或者map,但是其实不然,它根据索引值对应字符串的值,字串数组的长度等于最后一个字符串的索引值+1,因为索引是从0开始。另外这样定义字符串数组时,数组中最后要加上逗号,否则编译不通过。没有添加索引值的字符串,默认值为空,例如索引为0,2,4的对应的字符串,代码运行结果如下:
[ Hello World My Name is Conan]
0 :
1 : Hello
2 :
3 : World
4 :
5 : My
6 : Name
7 : is
8 : Conan
Hello
My
len is 9
通常情况下我们定义字符串数组,如下:
var str1 = []string{"My", "Name", "is", "Conan"}
fmt.Printf("%v\n", str1)
for index, value := range str1 {
fmt.Printf("%d : %s\n", index, value)
}
fmt.Println("len is", len(str1))
[My Name is Conan]
0 : My
1 : Name
2 : is
3 : Conan
len is 4
[]string这样定义之后,字符串数组的长度是根据之后初始化而定的,而[…]string则是根据索引值而定。
分享就这些,希望以后遇到这种情况的朋友们不要一脸懵逼。如果疑问或不同意见,请留言。