code: func GetDatacenterByName(sess *session.Session, name string, args ...interface{}) (datatypes.Location_Datacenter, error) {
  	var mask string
  	if len(args) > 0 {
  		mask = args[0].(string)
  	}
  
  	// SoftLayer does not provide a direct path to retrieve a list of "Location_Datacenter"
  	// objects. Location_Datacenter.getDatacenters() actually returns a list of "Location"
  	// objects, which do not have datacenter-specific properties populated.  So we do this
  	// in two passes
  
  	// First get the Location which matches the name
  	location, err := GetLocationByName(sess, name, "mask[id]")
  
  	if err != nil {
  		return datatypes.Location_Datacenter{}, err
  	}
  
  	// Now get the Datacenter record itself.
  	return services.GetLocationDatacenterService(sess).
  		Id(*location.Id).
  		Mask(mask).
  		GetObject()
  }
docs: // GetDatacenterByName returns a Location_Datacenter that matches the provided
  // name, or an error if no matching datacenter can be found.
  //
  // Note that unless you need to access datacenter-specific properties
  // (backendHardwareRouters, etc.), it is more efficient to use
  // GetLocationByName, since GetDatacenterByName requires an extra call to the
  // API