我想删除bucket/userID
但bucket/userID
我必须实施删除bucket/userID
,需要使用ListObjects
然后DeleteObjects
。
函数ListObjects
返回result.Contents
为[]*s3.Object
但DeleteObjects
需要[]*s3.ObjectIdentifier
。
我无法将[]*s3.Object
转换为[]*s3.ObjectIdentifier
在此代码中,错误发生invalid memory address or nil pointer dereference
type Object struct {
_ struct{} `type:"structure"`
ETag *string `type:"string"`
Key *string `min:"1" type:"string"`
LastModified *time.Time `type:"timestamp"
timestampFormat:"iso8601"`
Owner *Owner `type:"structure"`
Size *int64 `type:"integer"`
StorageClass *string `type:"string" enum:"ObjectStorageClass"`
}
type ObjectIdentifier struct {
_ struct{} `type:"structure"`
Key *string `min:"1" type:"string" required:"true"`
VersionId *string `type:"string"`
}
objects := getObjects() // return []*s3.Object
a := make([]*s3.ObjectIdentifier, len(objects))
for i, v := range objects {
a[i].Key = v.Key
}
a[i].Key = v.Key
是错误的。
如何实现删除bucket/userID
?
答案 0 :(得分:0)
Go开发者指南有一个主题,包含代码,有关删除存储桶中的所有对象的信息:https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/s3-example-basic-bucket-operations.html#s3-examples-bucket-ops-delete-all-bucket-items
答案 1 :(得分:0)
在您的实现中,this._route.snapshot.params["id"];
仅声明那些变量。它不会为每个结构初始化数组。结果,它将创建一个nil指针异常。
您需要在迭代中初始化所有结构:
a := make([]*s3.ObjectIdentifier, len(objects))
构造...
for i, v := range objects {
a[i] = &s3.ObjectIdentifier{
Key: v.Key,
}
}
后,您可以根据AWS Golang的文档使用[]*s3.ObjectIdentifier
参数调用DeleteObjects
。