Nice one ! Also consider example with simple under(lying) type
package main
import (
. "fmt"
)
type under int
// Based on (but with underlying type) : @blog.harishdurga.com/the-three-dots-in-golang
// define ...rest like parameter for variadic functions
func Sum(nums ...under) under {
var r under = 0
for _, n := range nums {
r += n
}
return under(r)
}
func main() {
/* Println( Sum([]int{1,2,3}...) ) */// instead do:
Println( Sum([]under{1,2,3}...) )
}