golang interface vs function pointer