golang interface implements