go语言为什么没有min/max(int, int)函数

CodeGeek · · 34620 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

golang为什么没有min/max(int, int)函数

我们知道go语言math包里面定义了min/max函数,但是是float64类型的,而并没有整数类型的min/max。

go语言的math包里面定义的min/max函数如下:

math.Min(float64, float64) float64
math.Max(float64, float64) float64

事实上我们更经常要比较的是两个整数的场景:

math.Min/Max(int, int), or
math.Min/Max(int64, int64)

那么,为什么go语言不提供整数类型的min/max这两个函数呢? 下面的这篇文章给了一个解释:

https://mrekucci.blogspot.jp/2015/07/dont-abuse-mathmax-mathmin.html

总结起来,主要理由是说,

  1. 由于float64类型要处理infinity和not-a-number这种值,而他们的处理非常复杂,一般用户没有能力,所有go需要为用户提供系统级别的解决办法。
  2. 对于int/int64类型的数据,min/max的实现非常简单直接,用户完全可以自己实现,例如:
func Min(x, y int64) int64 {
    if x < y {
        return x
    }
    return y
}

结论就是说go希望用户自己来实现如此简单的函数。

那么我的问题是:
因为min/max(int, int)的使用也如此的常见,难道需要用户在每一个自己的项目里面都实现一份min/max的代码吗,为什么不放在系统库例如math里面,方便所有人使用呢?


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:CodeGeek

查看原文:go语言为什么没有min/max(int, int)函数

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

34620 次点击  
加入收藏 微博
7 回复  |  直到 2020-11-18 10:40:37
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传