type CloudInfo … type CloudProvider … var providers … // RegisterCloudProvider registers the given cloud provider func RegisterCloudProvider(name info.CloudProvider, provider CloudProvider) { … } type realCloudInfo … func NewRealCloudInfo() CloudInfo { … } func (i *realCloudInfo) GetCloudProvider() info.CloudProvider { … } func (i *realCloudInfo) GetInstanceType() info.InstanceType { … } func (i *realCloudInfo) GetInstanceID() info.InstanceID { … }