我正在使用 awsses-go-skd,我需要将
to []string
转换为 ToAddresses []*string
。
但是我没能做到。这是解释原因的最小重现代码:
package main
import "fmt"
func main() {
a := []string{"a", "b", "c"}
var b []*string
for _, s := range a {
b = append(b, &s)
}
for _, s := range b {
fmt.Printf("%s, ", *s)
}
}
输出是:c,c,c,我期望:a,b,c,
为什么?以及如何解决?
有一个循环变量在每次迭代中重复使用。其地址将是相同的(只有 1 个循环变量),并且循环后的指向值将是最后一次迭代中设置的值。获取元素的地址:
for i := range a {
b = append(b, &a[i])
}
aws.StringSlice
所以你可以简单地写:
b := aws.StringSlice(a)