Everything in Go is passed by value, even the "reference types". Those types are called reference types because they hold a reference to some value in memory, exactly like a pointer.
You are correct, I was not being clear. They are not Go reference types are not reference types in the same way that they are in other languages.
When you pass a slice around are are really passing a small struct around by value (http://golang.org/pkg/reflect/#SliceHeader), and it is that struct that contains the pointer to the data.
If they were passed by reference, then we would expect this playground snip to print "false": http://play.golang.org/p/r6naknvzng