[学习笔记] Golang 切片
- 一般不直接使用常规数组。
- 切片是数组的抽象。
- 切片是底层 array 的一个 view
定义一个切片
定义一个长度为 10,容量为 10 的整型切片
var slice []int
slice := make([]int, 10, 10)
切片底层实现
- ptr 指向头元素的指针
- len 切片长度
- cap 切片容量
切片操作
slice := []int{0, 1, 2, 3, 4, 5, 6, 7, 8}
sliceOne := slice[2:6]
sliceTwo := sliceOne[3:7]
sliceThree := append(slice, 1)
// sliceOne: [2 3 4 5]
// sliceTwo: [5 6 7 8]
// sliceThree: [0 1 2 3 4 5 6 7 8 1]
经典两数之和
func twoSum(nums []int, target int) []int {
if len(nums) < 2 {
return nil
}
var res []int
tmpMap := make(map[int]int)
for k, num := range nums {
if _, ok := tmpMap[target-num]; ok {
res = append(res, tmpMap[target-num], k)
return res
}
tmpMap[num] = k
}
return nil
}
本作品采用《CC 协议》,转载必须注明作者和本文链接