slice 练习

1、分析代码输出结果

  1. package main
  2. import "fmt"
  3. /* slice 的练习题*/
  4. func main() {
  5. // 1、分析代码的输出结果
  6. var a = make([]string, 5, 10) // len=5 , cap=10
  7. fmt.Printf("a=%v,cap(a)=%v,len(a)=%d, ptr(a)=%p \r\n", a,cap(a),len(a), a)
  8. // [0,0,0,0,0] cap=10 len=5 a=地址 0xc00007c0a0
  9. // 错了, a 只是声明了,没有初始化, 所以 a是 [ ]
  10. for i:=0;i<10;i++{
  11. a = append(a,fmt.Sprintf("%v", i ))
  12. }
  13. fmt.Println(a)
  14. // append 对切片 a 扩容
  15. // 前面 a 没有初始化, 所以不用 0 填充
  16. // [ 0 1 2 3 4 5 6 7 8 9] len=15 cap=20
  17. }

2、 slice 切片的 sort 排序

3、关于Sprintf :

  1. /* 测试 Sprintf 和 Printf 的区别 */
  2. astr := "我的测试"
  3. bstr := "考试答辩"
  4. fmt.Printf("%v\r\n", astr) // 我的测试
  5. fmt.Sprintf("%v\r\n",bstr) // 什么都没有输出
  6. // Sprintf 并不会输出该字符串, 只会返回该字符串
  7. // 如果在编写程序的时候想要 保留值但不进行输出, 可以用 Sprintf
  8. c := fmt.Sprintf("%v",bstr) //拿 c 来接收一下 Sprintf 的格式化字符串
  9. fmt.Println(c)
  10. //我的测试
  11. //考试答辩