Skip to content

Instantly share code, notes, and snippets.

@montanaflynn
Created June 19, 2020 06:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save montanaflynn/e2933f83051120fddea548211702e8e8 to your computer and use it in GitHub Desktop.
Save montanaflynn/e2933f83051120fddea548211702e8e8 to your computer and use it in GitHub Desktop.
Golang generic Sum function https://blog.golang.org/generics-next-step
package main
import (
"fmt"
)
type number interface {
type int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64, float32, float64, complex64, complex128
}
func Sum(type T number)(i []T) (sum T) {
for _, n := range i {
sum += n
}
return sum
}
func main() {
fmt.Println(Sum([]int{1, 2}))
fmt.Println(Sum([]int8{1, 2}))
fmt.Println(Sum([]int16{1, 2}))
fmt.Println(Sum([]int32{1, 2}))
fmt.Println(Sum([]int64{1, 2}))
fmt.Println(Sum([]uint{1, 2}))
fmt.Println(Sum([]uint8{1, 2}))
fmt.Println(Sum([]uint16{1, 2}))
fmt.Println(Sum([]uint32{1, 2}))
fmt.Println(Sum([]uint64{1, 2}))
fmt.Println(Sum([]float32{1, 2}))
fmt.Println(Sum([]float64{1, 2}))
fmt.Println(Sum([]complex64{1, 2}))
fmt.Println(Sum([]complex128{1, 2}))
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment