【发布时间】:2019-02-07 02:02:38
【问题描述】:
我正在尝试重用代码(键/值)对来构建 ec2.Tag 和 autoscaling.Tag 类型,它们也是键/值对。但我认为我对转换/铸造了解不够,请指教。提前谢谢你。
panic: 接口转换:interface {} is []struct { Key string;值字符串 },而不是 []*ec2.Tag
func (c *CloudWorks) GetTagCollection() interface{} {
return []struct {
Key string
Value string
}{
{
Key: "key-a",
Value: "value-a",
},
{
Key: "key-b",
Value: "value-b",
},
{
Key: "key-c",
Value: "value-c",
},
}
}
func (c *CloudWorks) GetTags() []*ec2.Tag {
//return []*autoscaling.Tag{
// WORKS
//return []*ec2.Tag{
// {
// Key: aws.String("key1"),
// Value: aws.String("value1"),
// },
// {
// Key: aws.String("key2"),
// Value: aws.String("value3"),
// },
// {
// Key: aws.String("key3"),
// Value: aws.String("value3"),
// },
//}
// FAIL
return c.GetTagCollection().([]*ec2.Tag)
}
编辑 我的目标是避免代码重复,如何在这两个函数中重复使用键值对,非常感谢。
func (c *CloudWorks) GetEC2Tags() []*ec2.Tag {
return []*ec2.Tag{
{
Key: aws.String("key1"),
Value: aws.String("value1"),
},
{
Key: aws.String("key2"),
Value: aws.String("value3"),
},
}
}
func (c *CloudWorks) GetAutoscalingTags() []*autoscaling.Tag {
return []*autoscaling.Tag{
{
Key: aws.String("key1"),
Value: aws.String("value1"),
},
{
Key: aws.String("key2"),
Value: aws.String("value3"),
},
}
}
【问题讨论】:
标签: go aws-lambda aws-sdk