Go 如何将变量函数传递到另一个函数

Go 如何将变量函数传递到另一个函数,go,aws-sdk-go,Go,Aws Sdk Go,我正在使用,我想用“secretsmanager”服务做一个最低限度的工作示例 我正在尝试按照这个使用“kms”服务的类似程序中的步骤进行操作 这是我的剧本: 主程序包 进口( “上下文” “fmt” “日志” “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

我正在使用,我想用“secretsmanager”服务做一个最低限度的工作示例

我正在尝试按照这个使用“kms”服务的类似程序中的步骤进行操作

这是我的剧本:

主程序包
进口(
“上下文”
“fmt”
“日志”
“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())
如果错误!=零{
log.Printf(“错误:%v”,错误)
返回
}
客户端:=imds.NewFromConfig(cfg)
region,err:=client.GetRegion(context.TODO(),&imds.GetRegionInput{})
如果错误!=零{
log.Printf(“无法从EC2实例%v\n中检索区域”,错误)
}
fmt.Printf(地区,地区)
svc:=secretsmanager.NewFromConfig(cfg)
输入:=&secretsmanager.CreateSecretInput{Name:aws.String(“test”)}
选项:=&secretsmanager.Options{Region:Region.Region}
结果,错误:=svc.CreateSecret(context.TODO(),输入,选项)
如果错误!=零{
fmt.Println(错误)
}
fmt.Println(结果)
}
错误:

/main.go:38:46:无法在svc.CreateSecret的参数中将opts(type*secretsmanager.Options)用作func(*secretsmanager.Options)类型
因此,错误显然在以下几行:

opts:=&secretsmanager.Options{Region:Region.Region}
结果,错误:=svc.CreateSecret(context.TODO(),输入,选项)
从中,函数CreateSecret采用以下输入类型:

func (c *Client) CreateSecret(ctx context.Context, params *CreateSecretInput, optFns ...func(*Options)) (*CreateSecretOutput, error)
我无法找到如何在我的上下文中创建此
…func(*Options)
部件。有人能帮我弄一下这个零件吗?

我想出来了:

opts:=func(o*secretsmanager.Options){
o、 区域=区域。区域
}
结果,错误:=svc.CreateSecret(context.TODO(),输入,选项)

查找创建
secretsmanager.Options的函数,不要自己传递这些选项,它们通常以
和…
开头。类似于
secretsmanager.WithEndpointResolver
,基本上任何返回
func(*Options)
类型的函数,例如
func WithEndpointResolver(v EndpointResolver)func(*Options)
这就是您要找的吗?或者@TehSphinX我无法让你的例子发挥作用。我在这一点上卡住了
secretsmanager.WithEndpointResolver(secretsmanager.EndpointResolver(secretsmanager.resolvedpoint())
,不知道下一步应该通过什么