go struct interface