diff --git a/metadata/definition/definition.go b/metadata/definition/definition.go
index c8dd86b18fe91ec99e4ba0705bac6143d0b44f76..fa195d09d7efe022be9bdf40658e355a44b8705e 100644
--- a/metadata/definition/definition.go
+++ b/metadata/definition/definition.go
@@ -91,8 +91,8 @@ type TypeDefinition struct {
 }
 
 // BuildServiceDefinition can build service definition which will be used to describe a service
-func BuildServiceDefinition(service common.Service, url common.URL) ServiceDefinition {
-	sd := ServiceDefinition{}
+func BuildServiceDefinition(service common.Service, url common.URL) *ServiceDefinition {
+	sd := &ServiceDefinition{}
 	sd.CanonicalName = url.Service()
 
 	for k, m := range service.Method() {
diff --git a/metadata/report/delegate/delegate_report_test.go b/metadata/report/delegate/delegate_report_test.go
index 0e8da607004e213e9bc0220a97af1664f5e431e2..04c9e6483929d3ed58fd85337db6ccb4ebd53d00 100644
--- a/metadata/report/delegate/delegate_report_test.go
+++ b/metadata/report/delegate/delegate_report_test.go
@@ -106,7 +106,7 @@ func TestMetadataReport_StoreProviderMetadata(t *testing.T) {
 	mtr.StoreProviderMetadata(metadataId, getMockDefinition(metadataId, t))
 }
 
-func getMockDefinition(id *identifier.MetadataIdentifier, t *testing.T) definition.ServiceDefinition {
+func getMockDefinition(id *identifier.MetadataIdentifier, t *testing.T) *definition.ServiceDefinition {
 	protocol := "dubbo"
 	beanName := "UserProvider"
 	url, err := common.NewURL(fmt.Sprintf(