如何正确导入 aws-sdk-go 服务?

How to correctly import an aws-sdk-go service?

我是 Go 编程语言的新手,也是 AWS 的 Go SDK 的新手。我正在尝试使用服务,但遇到一个奇怪的问题,即找到了导入服务定义的类型,但服务的功能未定义。

这个问题不是关于使用特定服务,而是关于如何正确导入它。我的代码:

package auth

import (
    "log"

    "github.com/aws/aws-sdk-go/aws"
    "github.com/aws/aws-sdk-go/service/cognitoidentityprovider"
)

func SignUpTest() {

    input := cognitoidentityprovider.SignUpInput{
        Username: aws.String("example@mail.com"),
        Password: aws.String("test1234"),
    }

    _, err := cognitoidentityprovider.SignUp(&input)

    if err != nil {
        log.Fatal(err)
    }
}

当 运行 go build 时出现以下错误:

auth/signup.go:18:12: undefined: cognitoidentityprovider.SignUp

我的 IDE 中的自动完成也声明它可以找到 cognitoidentityprovider.SingUpInput 结构,但无法找到 cognitoidentityprovider.SignUp 函数。

我在 WSL Ubuntu 上使用 Go 1.10.1。我使用 DEP 0.4.1 进行包管理。我确认 AWS SDK 在 vendor 文件夹中可用,并且 cognitoidentityprovider 包可用(SignUp)函数也在那里。

我在这里错过了什么?

错误说明了一切。 cognitoidentityprovider.SignUp 未定义,因为 cognitoidentityprovider 包没有导出符号 SignUp

我不太确定你想做什么,因为我不熟悉那个 SDK,但你试图调用一个不存在的函数。我建议重新检查您正在关注的文档或示例。你可能犯了一个简单的错误。

您似乎对 CognitoIdentityProvider.SignUp 实例方法感到困惑。但由于这是一个实例方法,而不是导出函数,它首先需要一个 CognitoIdentityProvider 的实例:

cip := cognitoidentityprovider.New( ... )
_, err := cip.SignUp(input)