* is two things:
1) An operator that lets you dereference a pointer, like: bar = *foo
2) A token that, inside a type literal, indicates a pointer type, like: type intpt *int
& is just one thing, an operator that lets you take the address of something, like: pt := &foo
& does not make sense inside type literals.
Now, to initialize a slice, you use a slice literal, such as:
myslice := []int{1, 2, 3, 5}
or, if the slice is empty:
myslice := []int{}
What comes before "{}" is the type of the slice ([]int in this case).
The type of the slice is a type literal, so & does not make sense there.