java中的remove函数,切片的通用remove()函数

试图让Go变得通用是新Go开发人员的一大陷阱 . 停止 . 你要保存five of lines of code:

for i := len(foos) - 1; i >= 0; i-- {

if foos[i] == foo1 {

foos = append(foos[:i], foos[i+1:]...)

}

}

是的,在通用语言中,您可以将这五行包装到一个不错的stdlib方法中,但Go不是通用语言 . 尝试用反射来做这件事很慢,但是很难做到这一点 . 你花费更多的时间找出 Value 并追逐奇怪的角落情况,而不是花费12次重写这五行代码(包括修复你不小心剪掉/粘贴错误的时间,有一次你搞砸了 i-- ) . 写下来吧 .

只需编写代码,您就可以决定平等意味着什么 . 它允许您决定是在第一场比赛中停止搜索,还是继续浏览整个列表 . 它可以让你完成这个程序所需要的东西,而不是专注于某些通用程序有朝一日可能需要的东西 .

我喜欢通用编程 . 几乎没有什么比在Haskell中创造优雅的折叠更让我开心 . 但这不是Go的方式 . 在Go中,您通常只需编写代码,保持简单明了,然后继续 .

Andy提出了一个很好的观点,如果你必须做很多事情, list 可能是一个更好的数据结构 . 而且我经常发现当我有三种类型似乎都有并行方法时,事实证明它们应该都是单个结构的一部分(你真的需要单独的列表吗?)但无论如何,请保持远离反思除非你有一个非常专业的问题你真正的意思"anything"而不是"one of these short list of things."

(值得注意的是你召唤 append() . 我不能在Go中写 append() . 在Go中工作的's why it had to be part of the language rather than a stdlib function. When I started working in Go, I took that as a significant flaw in the language. The longer I',我发现它不是那么重要 . 你只需编写代码然后继续 . )

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值