【學習筆記】Golang 切片

icecho發表於2019-09-12
  • 一般不直接使用常規陣列。
  • 切片是陣列的抽象。
  • 切片是底層 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
}

Hello。

相關文章