Golang value type and reference type

In Golang, one of the confusing part is value type and reference type.

Value type: int, float, string, bool, structs

Reference type: slides, maps, channels, pointers, functions

You need to use pointers to change value type in a function. But you dont have to worry about pointer for reference type.