From: Robert Griesemer min or max applied to constant arguments,
unsafe.Sizeof applied to certain values,
cap or len applied to
some expressions,
@@ -2319,7 +2320,7 @@ Zero value:
Functions:
append cap clear close complex copy delete imag len
- make new panic print println real recover
+ make max min new panic print println real recover
Exported identifiers
@@ -7531,6 +7532,70 @@ The precise behavior is implementation-dependent.
+The built-in functions min and max compute the
+smallest—or largest, respectively—value of a fixed number of
+arguments of ordered types.
+There must be at least one argument.
+
+The same type rules as for operators apply:
+for ordered arguments x and
+y, min(x, y) is valid if x + y is valid,
+and the type of min(x, y) is the type of x + y
+(and similarly for max).
+If all arguments are constant, the result is constant.
+
+var x, y int
+m := min(x) // m == x
+m := min(x, y) // m is the smaller of x and y
+m := max(x, y, 10) // m is the larger of x and y but at least 10
+c := max(1, 2.0, 10) // c == 10.0 (floating-point kind)
+f := max(0, float32(x)) // type of f is float32
+var s []string
+_ = min(s...) // invalid: slice arguments are not permitted
+t := max("", "foo", "bar") // t == "foo" (string kind)
+
+
+
+For numeric arguments, min and max are
+commutative and associative:
+
+min(x, y) == min(y, x) +min(x, y, z) == min(min(x, y), z) == min(x, min(y, z)) ++ +
+For floating-point arguments negative zero, NaN, and infinity the following rules apply: +
+ ++ x y min(x, y) max(x, y) + + -0.0 0.0 -0.0 0.0 // negative zero is smaller than (non-negative) zero + -Inf y -Inf y // negative infinity is smaller than any other number + +Inf y y +Inf // positive infinity is larger than any other number + NaN y NaN NaN // if any argument is a NaN, the result is a NaN ++ +
+For string arguments the result for min is the first argument
+with the smallest (or for max, largest) value,
+compared lexically byte-wise:
+
+min(x, y) == if x <= y then x else y +min(x, y, z) == min(min(x, y), z) ++