Golang 将打印存储为变量

CJW*_*CJW -1 go

我对 GO 还很陌生,我希望有人能够为我指明正确的方向。我正在尝试将打印存储到变量中。为了提供一些背景信息,目前,我正在检索 Amazon S3 中的文件的 URL,并且我希望将该 URL 存储为变量,以便我可以将其以电子邮件或推送通知的形式发送出去。

这是我现在所拥有的:

func main() {
    bucket := "bucket"
    region := "eu-west-2"

    // Initialize a session in us-west-2 that the SDK will use to load
    // credentials from the shared credentials file ~/.aws/credentials.
    sess, err := session.NewSession(&aws.Config{
        Region: aws.String("eu-west-2")},
    )

    // Create S3 service client
    svc := s3.New(sess)


    // Get the list of item
    resp, err := svc.ListObjects(&s3.ListObjectsInput{Bucket: aws.String(bucket)})
    if err != nil {
        exitErrorf("Unable to list items in bucket %q, %v", bucket, err)
    }

    for _, item := range resp.Contents {
        fmt.Printf("https://s3.%s.amazonaws.com/%s/%s", region, bucket, *item.Key)
        fmt.Println("")
        var url string = "https://s3.%s.amazonaws.com/%s/%s", region, bucket, *item.Key
}
}

func exitErrorf(msg string, args ...interface{}) {
    fmt.Fprintf(os.Stderr, msg+"\n", args...)
    os.Exit(1)
}
Run Code Online (Sandbox Code Playgroud)

这会在extra expression in var declaration尝试编译时导致(TBF我没想到它会起作用)。有人知道这样做的替代方法吗?

谢谢!

edk*_*ked 5

要存储串联结果,可以使用fmt.Sprintf

variable := fmt.Sprintf("https://s3.%s.amazonaws.com/%s/%s", region, bucket, *item.Key)
Run Code Online (Sandbox Code Playgroud)