不使用slice作为函数入参

 

secguide/Go安全指南.md at main · Tencent/secguide · GitHub https://github.com/Tencent/secguide/blob/main/Go%E5%AE%89%E5%85%A8%E6%8C%87%E5%8D%97.md#119%E6%8E%A8%E8%8D%90%E4%B8%8D%E4%BD%BF%E7%94%A8slice%E4%BD%9C%E4%B8%BA%E5%87%BD%E6%95%B0%E5%85%A5%E5%8F%82

1.1.9【推荐】不使用slice作为函数入参

  • slice在作为函数入参时,函数内对slice的修改可能会影响原始数据
  // bad
  // slice作为函数入参时包含原始数组指针
  func modify(array []int) {
      array[0] = 10 // 对入参slice的元素修改会影响原始数据
  }
  
  func main() {
      array := []int{1, 2, 3, 4, 5}
  
      modify(array)
      fmt.Println(array) // output:[10 2 3 4 5]
  }

  // good
  // 数组作为函数入参,而不是slice
  func modify(array [5]int) {
    array[0] = 10
  }

  func main() {
      // 传入数组,注意数组与slice的区别
      array := [5]int{1, 2, 3, 4, 5}
  
      modify(array)
      fmt.Println(array)
  }
  
 

 

posted @ 2022-01-25 09:43  papering  阅读(51)  评论(0编辑  收藏  举报