1. 请写出下面代码的输出结果。
func main() {
var a = make([]string, 5, 10)
for i := 0; i < 10; i++ {
a = append(a, fmt.Sprintf("%v", i))
}
fmt.Println(a)
}
运行截图:
结果分析:起初我误以为a切片的类型为int,故推测结果为[0,0,0,0,0,0,1,2,3,4,5,6,7,8,9],因为int类型的切片其元素有default值——0,而string型没有,所以本题运行结果如图中所示(看清元素之间没有comma)。至于切片扩容,由于新申请的长度都为1不大于旧切片长度的二倍,且旧切片的长度小于1024,所以旧切片长度的二倍就是扩容后的切片容量。
而此题中向string型切片中添加其他类型的元素请参考Go 字符切片中添加其他类型元素,其中涉及到切片类型的转换问题,此处不宜多讲,可参阅其他资料查询。
2. 请使用内置的sort包对数组var a = […]int{3, 7, 8, 9, 1}进行排序(附加题,自行查资料解答)。
代码如下:
package main
import (
"fmt"
"sort"
)
func main() {
var a = [...]int{3, 7, 8, 9, 1}
sort.Ints(a[:])
fmt.Println(a)
}
运行结果:
此外,内置的sort包还可以对float、string类型的切片进行排序
参考文章:golang之切片与排序
题目出处:[李文周Go基础之切片基础](https://www.liwenzhou.com/posts/Go/06_slice/)