gpt4 book ai didi

go - 看不懂一些 Go 代码

转载 作者:IT王子 更新时间:2023-10-29 01:35:04 24 4
gpt4 key购买 nike

当我阅读“net”包的代码时,我发现了一些这样的代码:

// first returns the first address which satisfies strategy, or if
// none do, then the first address of any kind.
func (addrs addrList) first(strategy func(Addr) bool) Addr {
for _, addr := range addrs {
if strategy(addr) {
return addr
}
}
return addrs[0]
}

我真的很困惑为什么 func 首先包含另一个名为 func(Addr) 的 func,以及这段代码如何实现注释所说的行为?

最佳答案

1 func (addrs addrList) first(strategy func(Addr) bool) Addr {
2 for _, addr := range addrs {
3 if strategy(addr) {
4 return addr
}
}
5 return addrs[0]
}

言外之意:

  1. 函数addrs名为 first返回 Addr需要 strategy参数必须是一个接受 Addr 的函数并返回 bool .
  2. for每个addrrangeaddrs应用函数 strategyaddr
  3. 如果它(strategy 函数)返回true
  4. 然后整个函数first返回 addr
  5. 整个函数 first返回第一个 [0] Addr来自 addrs , 暗示:只有在 strategy 都没有的情况下才会发生调用 addrrangeaddrs返回 true .

关于go - 看不懂一些 Go 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47364079/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com