Aside from being a waste, writing it generically is also very panic/error prone (
http://play.golang.org/p/rs6kfvRD9M).
You get panics at runtime if you don't pass a slice as first argument, and you can easily not get the result you're looking for, since go considers values
of different types (in interface values) to never be equal. In both these cases, writing the for-range-if loop yourself will not have these problems because the code will not compile until the types are correct (no panics), and thus the comparison will work as expected.
Also it's much slower.
Depending on the implementation of Contains, you could get a run time panic, or never succeed in a case that seems to be obviously true (since the types actually don't match).