gpt4 book ai didi

go - 如何将可变参数传递给另一个函数

转载 作者:行者123 更新时间:2023-12-03 10:09:07 25 4
gpt4 key购买 nike

我正在使用aws-sdk-v2,我想使用“secretsmanager”服务做一个最小的工作示例。
我正在尝试使用“kms”服务的类似example中的步骤。
这是我的脚本:

package main

import (
"context"
"fmt"
"log"

"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/config"
"github.com/aws/aws-sdk-go-v2/feature/ec2/imds"
"github.com/aws/aws-sdk-go-v2/service/secretsmanager"
)

func main() {

cfg, err := config.LoadDefaultConfig(context.TODO())
if err != nil {
log.Printf("error: %v", err)
return
}

client := imds.NewFromConfig(cfg)

region, err := client.GetRegion(context.TODO(), &imds.GetRegionInput{})
if err != nil {
log.Printf("Unable to retrieve the region from the EC2 instance %v\n", err)
}

fmt.Printf(region.Region)

svc := secretsmanager.NewFromConfig(cfg)

input := &secretsmanager.CreateSecretInput{Name: aws.String("test")}

opts := &secretsmanager.Options{Region: region.Region}
result, err := svc.CreateSecret(context.TODO(), input, opts)

if err != nil {

fmt.Println(err)
}
fmt.Println(result)

}
错误:
./main.go:38:46: cannot use opts (type *secretsmanager.Options) as type func(*secretsmanager.Options) in argument to svc.CreateSecret
所以错误显然在这些行中:
    opts := &secretsmanager.Options{Region: region.Region}
result, err := svc.CreateSecret(context.TODO(), input, opts)
documentation中,函数CreateSecret接受以下输入类型:
func (c *Client) CreateSecret(ctx context.Context, params *CreateSecretInput, optFns ...func(*Options)) (*CreateSecretOutput, error)
我找不到如何在上下文中创建此 ...func(*Options)部分的方法。有人可以帮我这部分吗?

最佳答案

我想到了:

    opts := func(o *secretsmanager.Options) {
o.Region = region.Region
}

result, err := svc.CreateSecret(context.TODO(), input, opts)

关于go - 如何将可变参数传递给另一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66105276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com