code: func RetrieveProperties(ctx context.Context, r soap.RoundTripper, pc, obj types.ManagedObjectReference, dst interface{}) error {
  	req := types.RetrieveProperties{
  		This: pc,
  		SpecSet: []types.PropertyFilterSpec{
  			{
  				ObjectSet: []types.ObjectSpec{
  					{
  						Obj:  obj,
  						Skip: types.NewBool(false),
  					},
  				},
  				PropSet: []types.PropertySpec{
  					{
  						All:  types.NewBool(true),
  						Type: obj.Type,
  					},
  				},
  			},
  		},
  	}
  
  	return RetrievePropertiesForRequest(ctx, r, req, dst)
  }
docs: // RetrieveProperties retrieves the properties of the managed object specified
  // as obj and decodes the response struct into the value pointed to by dst.