不使用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 @   papering  阅读(52)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!
历史上的今天:
2021-01-25 统一登录的几种常用设计模式
2019-01-25 栈 数制转换
2018-01-25 鼠标滚轮
2018-01-25 借助有道词典识别屏幕字符串
2018-01-25 获取剪切板内容 Navigator.clipboard 获取网页图片到剪切板,然后粘贴 复制指定区域,比如一张图片
2018-01-25 【源码】PyObject_VAR_HEAD 定长对象 变长对象
2018-01-25 序列中插入元素
点击右上角即可分享
微信分享提示