There is no optional param support in golang. But we can use variadic arguments. The function actually receives a slice of whatever type you specify.
func foo(params ...int) {
fmt.Println(len(params))
}
func main() {
foo()
foo(1)
foo(1,2,3)
foo([]int{1, 2, 3, 4}...)
}