[学习笔记] 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 协议》,转载必须注明作者和本文链接
Hello。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!