This commit is contained in:
Tyrel Souza 2022-10-06 13:50:12 -04:00
parent f7047b5321
commit e124226b07
No known key found for this signature in database
GPG Key ID: F6582CF1308A2360
2 changed files with 52 additions and 0 deletions

3
go/genericz/go.mod Normal file
View File

@ -0,0 +1,3 @@
module genericz
go 1.19

49
go/genericz/main.go Normal file
View File

@ -0,0 +1,49 @@
package main
import "fmt"
func SumInts(m map[string]int64) int64 {
var s int64
for _, v := range m {
s += v
}
return s
}
func SumFloats(m map[string]float64) float64 {
var s float64
for _, v := range m {
s += v
}
return s
}
func SumMap[K comparable, V int64 | float64](m map[K]V) V {
var s V
for _, v := range m {
s += v
}
return s
}
func main() {
// Initialize a map for the integer values
ints := map[string]int64{
"first": 34,
"second": 12,
}
// Initialize a map for the float values
floats := map[string]float64{
"first": 35.98,
"second": 26.99,
}
fmt.Printf("Non-Generic Sums: %v and %v\n",
SumInts(ints),
SumFloats(floats))
fmt.Printf("Generic Sums: %v and %v\n",
SumMap[string, int64](ints),
SumMap[string, float64](floats))
}