That's one of the things in my original comment.
Although I agree with you about some basic things in Go such as insertion being somewhat crazy, but there's a point I want to make about abstractions.
Abstractions that hide too many things away are not always a good thing.
If an abstraction makes something easier to write, but harder to read, that's not a very good thing.
Unfortunately Go does not exactly hit the sweet spot. It errs on the side of less expressive power.
EDIT:
Actually, for inserting into a list, the code can be simple, although the line will be split into three lines, and creates a new temporary list
// insert number 10 into position 2
var b []int
b = append(b, a[0:2]...)
b = append(b, 10)
b = append(b, a[2:]...)
https://play.golang.com/p/ommopBd3io
Now, that _is_ overly verbose, but I don't think it's too off putting. I don't like it but I guess it's a quirk of go I'm willing to put up with.