amazon-web-services - Golang函数参数中的函数数组
问题描述
玩弄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
? 例如,如果我想更改默认值。
解决方案
uploaderOptions
调用过程中NewS3FileWriter
需要填充函数切片的参数。并且每个函数都必须有一个类型为 的参数*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)
推荐阅读
- kubernetes - 在 Kind 上使用 Ingress 和 LoadBalancer 类型的服务
- python - 用于输入自动语音识别模型的不同格式(比特率)的音频数据
- quaternions - 使用带有 gl-matrix.js 的四元数进行简单旋转
- java - Thymeleaf:检索隐藏输入到控制器的值
- python - 如何用while循环解决这个问题
- javascript - 如何避免异步事件处理程序顺序混乱
- java - 如何将视觉添加到 JComponent
- google-cloud-platform - Google Cloud Run - 使用机密时无法部署新修订
- javascript - 如果您删除用户对象,则删除论坛对象 (Mongoose OneToMany)
- python - 将 X、Y 坐标列表转换为所有坐标之间的值列表