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}...) }