Go无法将字符串设置为结构
Go can't set string to struct
此代码是从 s3 获取所有对象并删除对象。
getAllObjects
从 DeletePhotosFromS3
调用。
我云在 DeletePhotosFromS3
.
中的 objects
中得到 2 个不同的密钥
但是 deleteObjects
有 2 个相同的键。例如 [{Key: 1}, {Key: 1}]
.
为什么 deleteObjects
有 2 个相同的键以及如何在 []*s3.ObjectIdentifier
中设置 objects
?
func getAllObject(userID string) (*[]string, error) {
var objects []string
svc := initS3()
config := model.NewConfig()
input := &s3.ListObjectsInput{
Bucket: aws.String(config.AWSS3Bucket),
Prefix: aws.String(userID),
MaxKeys: aws.Int64(2), // default 1000
}
result, err := svc.ListObjects(input)
if err != nil {
return &objects, err
}
for _, v := range result.Contents {
objects = append(objects, *v.Key)
}
return &objects, nil
}
func DeletePhotosFromS3(userID string) (error) {
var deleteObjects []*s3.ObjectIdentifier
svc := initS3()
config := model.NewConfig()
objects, err := getAllObject(userID) // called getAllObject
for _, v := range *objects {
deleteObjects = append(deleteObjects, &s3.ObjectIdentifier{Key: &v}) // Er
}
...
}
for 循环中的迭代值 v
会在每次迭代中重复使用。指针 &v
对于附加到列表的每个项目都是相同的。固定片段:
for _, v := range *objects {
vcopy := v
deleteObjects = append(deleteObjects, &s3.ObjectIdentifier{Key: &vcopy})
}
此代码是从 s3 获取所有对象并删除对象。
getAllObjects
从 DeletePhotosFromS3
调用。
我云在 DeletePhotosFromS3
.
中的 objects
中得到 2 个不同的密钥
但是 deleteObjects
有 2 个相同的键。例如 [{Key: 1}, {Key: 1}]
.
为什么 deleteObjects
有 2 个相同的键以及如何在 []*s3.ObjectIdentifier
中设置 objects
?
func getAllObject(userID string) (*[]string, error) {
var objects []string
svc := initS3()
config := model.NewConfig()
input := &s3.ListObjectsInput{
Bucket: aws.String(config.AWSS3Bucket),
Prefix: aws.String(userID),
MaxKeys: aws.Int64(2), // default 1000
}
result, err := svc.ListObjects(input)
if err != nil {
return &objects, err
}
for _, v := range result.Contents {
objects = append(objects, *v.Key)
}
return &objects, nil
}
func DeletePhotosFromS3(userID string) (error) {
var deleteObjects []*s3.ObjectIdentifier
svc := initS3()
config := model.NewConfig()
objects, err := getAllObject(userID) // called getAllObject
for _, v := range *objects {
deleteObjects = append(deleteObjects, &s3.ObjectIdentifier{Key: &v}) // Er
}
...
}
for 循环中的迭代值 v
会在每次迭代中重复使用。指针 &v
对于附加到列表的每个项目都是相同的。固定片段:
for _, v := range *objects {
vcopy := v
deleteObjects = append(deleteObjects, &s3.ObjectIdentifier{Key: &vcopy})
}