go选项参数设置OptionFunc()-go
go选项参数设置OptionFunc()
package clusterfileimport ( "errors" "sync" "github.com/labring/sealos/pkg/runtime" v2 "github.com/labring/sealos/pkg/types/v1beta1")var ErrTypeNotFound = errors.New("no corresponding type structure was found")type ClusterFile struct { path string customConfigFiles []string customValues []string customSets []string customEnvs []string Cluster *v2.Cluster Configs []v2.Config KubeConfig *runtime.KubeadmConfig //Plugins []v1.Plugin once sync.Once}type Interface interface { PreProcessor GetCluster() *v2.Cluster GetConfigs() []v2.Config //GetPlugins() []v1.Plugin GetKubeadmConfig() *runtime.KubeadmConfig}func (c *ClusterFile) GetCluster() *v2.Cluster { return c.Cluster}func (c *ClusterFile) GetConfigs() []v2.Config { return c.Configs}//func (c *ClusterFile) GetPlugins() []v1.Plugin {// return c.Plugins//}func (c *ClusterFile) GetKubeadmConfig() *runtime.KubeadmConfig { return c.KubeConfig}type OptionFunc func(*ClusterFile)func WithCustomConfigFiles(files []string) OptionFunc { return func(c *ClusterFile) { c.customConfigFiles = files }}func WithCustomValues(valueFiles []string) OptionFunc { return func(c *ClusterFile) { c.customValues = valueFiles }}func WithCustomSets(sets []string) OptionFunc { return func(c *ClusterFile) { c.customSets = sets }}func WithCustomEnvs(envs []string) OptionFunc { return func(c *ClusterFile) { c.customEnvs = envs }}func NewClusterFile(path string, opts ...OptionFunc) Interface { cf := &ClusterFile{ path: path, } for _, opt := range opts { opt(cf) } return cf}
————————
package clusterfileimport ( "errors" "sync" "github.com/labring/sealos/pkg/runtime" v2 "github.com/labring/sealos/pkg/types/v1beta1")var ErrTypeNotFound = errors.New("no corresponding type structure was found")type ClusterFile struct { path string customConfigFiles []string customValues []string customSets []string customEnvs []string Cluster *v2.Cluster Configs []v2.Config KubeConfig *runtime.KubeadmConfig //Plugins []v1.Plugin once sync.Once}type Interface interface { PreProcessor GetCluster() *v2.Cluster GetConfigs() []v2.Config //GetPlugins() []v1.Plugin GetKubeadmConfig() *runtime.KubeadmConfig}func (c *ClusterFile) GetCluster() *v2.Cluster { return c.Cluster}func (c *ClusterFile) GetConfigs() []v2.Config { return c.Configs}//func (c *ClusterFile) GetPlugins() []v1.Plugin {// return c.Plugins//}func (c *ClusterFile) GetKubeadmConfig() *runtime.KubeadmConfig { return c.KubeConfig}type OptionFunc func(*ClusterFile)func WithCustomConfigFiles(files []string) OptionFunc { return func(c *ClusterFile) { c.customConfigFiles = files }}func WithCustomValues(valueFiles []string) OptionFunc { return func(c *ClusterFile) { c.customValues = valueFiles }}func WithCustomSets(sets []string) OptionFunc { return func(c *ClusterFile) { c.customSets = sets }}func WithCustomEnvs(envs []string) OptionFunc { return func(c *ClusterFile) { c.customEnvs = envs }}func NewClusterFile(path string, opts ...OptionFunc) Interface { cf := &ClusterFile{ path: path, } for _, opt := range opts { opt(cf) } return cf}