Можно только через попу это организовать.
Папа Стифлера в соседнем ответе показал как. Большое количество рефлексии в коде примера и показывает, что это неправильный путь. Только как крайняя мера.
А вот непротиворечащая идеологии Go вещь - это будет с явным указанием типов:
package main
import (
"fmt"
)
func add(a, b int) int {
return a + b
}
func sub(a, b int) int {
return a - b
}
func main() {
table:= make(map[string]func(int,int)int)
table["func1"] = add
table["func2"] = sub
fmt.Println(table["func1"](5, 3))
fmt.Println(table["func2"](5, 3))
}
Кода значительно меньше, типы - жестко определены.