Go 竟然没有标准库的 min max

308 天前
 chesha1

最近开始学 go ,就用 go 刷 leetcode ,竟然没有 min max 函数,真的非常蛋疼
连标准库功能一点都不丰富的 C++都有内置的 min 和 max 呢

虽然 go 现在也有泛型了,但是直接用泛型写一个 min max 也是不行的
没有直接支持 > <
比如下面这个就是不合法的

func max[T comparable](a, b T) T {
    if a > b {
        return a
    }
    return b
}

还得再引入一个包

import (
	"golang.org/x/exp/constraints"
)

func max[T constraints.Ordered](a, b T) T {
	if a > b {
		return a
	}
	return b
}

所以这么设计的意义在哪里,很怪很怪,还有什么流行的语言没有内置 min 和 max 吗?
C 也没有 max 和 min ,但是人家好歹可以用宏一行写一个,go 就不行

6039 次点击
所在节点    Go 编程语言
48 条回复
fregie
307 天前
我甚至不知道该从什么角度吐槽了
ZeroDu
307 天前
这就是 go ,大道至简。写着写着总会遇到一些蛋疼的问题
bronya0
307 天前
用 go 就是这样,你别把它当 python ,当成增强的 c 就能理解了,很操蛋
crackidz
307 天前
@ixiaohei 要考虑所有的工具链是不是适合升级,这个确实卡了很久,我们很多的在用工具链在大概过了 1 年多才适配最新的版本
7inFen
307 天前
Mexion
307 天前
Go 本来就啥都没有,体验非常蛋疼
totoro52
307 天前
go 自带库功能很少, 还是 java 的生态香啊
nagisaushio
307 天前
@Trim21 然而新版本内置的 min max 还是编译器开后门(悲)
Hanggi
307 天前
都过去这么多年了,对 golang 的认知并没有什么提升呢。

还在用大道至简这种不清不楚的表达
mohuani
307 天前
@Binwalker 翻译:啥都没有
gitrebase
307 天前
@ufan0 我待过的每一个用 Go 的团队,都是新版本一出就升级的
loolac
307 天前
这是只能比较 a 和 b, 还有 cdef ... 呢
xdeng
307 天前
什么时候把 三目运算 加上吧
lambdaq
307 天前
@taxue67marx 九转大肠 [/doge]
RoccoShi
307 天前
每次刷 leetcode 的时候都会吐槽 go 居然没有开箱即用的 min, max, abs, hashtable

```
func min(a, b int) int { if b < a { return b }; return a }
func max(a, b int) int { if b > a { return b }; return a }
func abs(x int) int { if x < 0 { return -x }; return x }
```
Trim21
307 天前
@nagisaushio 难绷,为啥啊
zjbztianya
307 天前
现在力扣现在的 go 版本有泛型 min max 啊
nagisaushio
307 天前
@Trim21 为了不增加运行时成本吧。如果实现成普通 variadic 函数每次都要构造一个 slice
xoxo419
307 天前
每种语言都好比一种武动, [太极拳只重其义,不重其招。你忘记所有的招式,就练成太极拳了。]
securityCoding
307 天前
go 的工具库,集合库凑合第三方吧,没见过这么搓的官方库

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1002121

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX