将切片/数组传递给另一个结构

我有以下代码对我有用。


params := &cloudformation.CreateStackInput{

    StackName:   aws.String(d.MachineName),

    TemplateURL: aws.String(d.CloudFormationURL),

    Parameters: []*cloudformation.Parameter{

        {

            ParameterKey:   aws.String("KeyName"),

            ParameterValue: aws.String(d.KeyPairName),

        },

    },

}

我想外部化参数的创建,所以我创建了以下方法。


func (d *Driver) createParams() []cloudformation.Parameter {


val := "KeyName=Foo|KeyName2=bar"


s := strings.Split(val, "|")


a := []cloudformation.Parameter{}


for _, element := range s {


    pairs := strings.Split(element, "=")


    key := pairs[0]

    value := pairs[1]


    par := cloudformation.Parameter{

        ParameterKey:   aws.String(key),

        ParameterValue: aws.String(value),

    }


    a = append(a, par)


}


return a

}


我的问题是如何将 createParams 的输出传递给 CreateStackInput 的参数?


params := &cloudformation.CreateStackInput{

    StackName:   aws.String(d.MachineName),

    TemplateURL: aws.String(d.CloudFormationURL),

    Parameters:  d.createParam(),

}

以上产量


cannot use d.createParam() (type []cloudformation.Parameter) as type []*cloudformation.Parameter in field value



幕布斯7119047
浏览 137回答 1
1回答

跃然一笑

指针类型与它们指向的解引用类型不兼容,当您尝试将 a 设置[]*cloudformation.Parameter为 a 时,错误会告诉您这一点[]cloudformation.Parameter。更改createParamsto的返回类型[]*cloudformation.Parameter并设置par := &cloudformation.Parameter。func (d *Driver) createParams() []*cloudformation.Parameter {  val := "KeyName=Foo|KeyName2=bar"  s := strings.Split(val, "|")  a := []*cloudformation.Parameter{} //a should be a slice of pointers  for _, element := range s {      pairs := strings.Split(element, "=")      key := pairs[0]      value := pairs[1]      par := &cloudformation.Parameter{ //& turns par into a pointer to the parameter          ParameterKey:   aws.String(key),          ParameterValue: aws.String(value),      }      a = append(a, par)    }  return a  }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go