amazon-web-services - 函数参数中的 Golang 函数数组

标签 amazon-web-services go aws-sdk-go

使用 golang parquet 包并遇到接受以下参数的函数 s3.NewS3FileWriter []func(*s3manager.Uploader)

func NewS3FileWriter(
    ctx context.Context,
    bucket string,
    key string,
    uploaderOptions []func(*s3manager.Uploader),
    cfgs ...*aws.Config,
) (source.ParquetFile, error) {
    if activeS3Session == nil {
        sessLock.Lock()
        if activeS3Session == nil {
            activeS3Session = session.Must(session.NewSession())
        }
        sessLock.Unlock()
    }

    file := &S3File{
        ctx:             ctx,
        client:          s3.New(activeS3Session, cfgs...),
        writeDone:       make(chan error),
        uploaderOptions: uploaderOptions,
        BucketName:      bucket,
        Key:             key,
    }

    return file.Create(key)
}

[]func(*s3manager.Uploader) 是什么意思?我如何传递 s3Manager.Uploader 的修改版本?例如,如果我想更改默认值。

最佳答案

NewS3FileWriteruploaderOptions 参数在调用时需要填充slice of functions。并且每个函数都必须有一个类型为 *s3manager.Uploader 的参数。

例子:

uploaderOptions := make([]func(*s3manager.Uploader), 0)

uploader1 := func (param *s3manager.Uploader) {
    fmt.Println("uploader 1", param)
}
uploaderOptions = append(uploaderOptions, uploader1)

uploader2 := func (param *s3manager.Uploader) {
    fmt.Println("uploader 2", param)
}
uploaderOptions = append(uploaderOptions, uploader2)

// ...

NewS3FileWriter(ctx, bucket, key, uploaderOptions)

关于amazon-web-services - 函数参数中的 Golang 函数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56899852/

相关文章:

azure - 使用 Azure AD 作为 AWS 的身份提供商

node.js - 使用 elasticsearch 客户端时主机 header 无效

bash - 安装 json2csv 时出现 $GOPATH 错误

amazon-web-services - 使用AWS开发工具包Go从Fargate任务中的角色加载AWS凭证的正确方法是什么?

amazon-web-services - 向多个设备发送 SNS 推送通知消息

mysql - 数据库版本更改后,不会自动使用索引

amazon-web-services - AWS SNS "maxReceivesPerSecond"策略未按预期工作

docker - Docker容器内的Kerberos客户端

go - 输入 noRows struct{} var _ Result = noRows{}

amazon-web-services - 使用 s3 上传多个文件