Golang While 循环

标签 go

  • 我想从 AWS 中提取所有自动缩放组
  • AWS 在多个页面中提供响应,NextToken 指向下一页。所以需要继续寻找 NextToken 并拉取组名
  • 如果没有NextToken,则退出。

在 python 中,我这样做:

import boto3
import pprint

session = boto3.session.Session(region_name='us-west-2')
client = session.client('autoscaling')

resp = client.describe_auto_scaling_groups()
pprint.pprint(resp)

while 'NextToken' in resp:
    resp = client.describe_auto_scaling_groups(NextToken=resp['NextToken'])          
    pprint.pprint(resp)

我在 中遵循了类似的逻辑并提出了以下代码:

package main

import (
    "fmt"
    "github.com/aws/aws-sdk-go/aws"
    "github.com/aws/aws-sdk-go/aws/session"
    "github.com/aws/aws-sdk-go/service/autoscaling"
)

func main() {
    sess, err := session.NewSession(&aws.Config{Region: aws.String("us-west-2")})

    if err != nil {
        fmt.Println("Failed to create session: ", sess)
        return
    }

    svc := autoscaling.New(sess)
    params := &autoscaling.DescribeAutoScalingGroupsInput{}
    resp, err := svc.DescribeAutoScalingGroups(params)

    if err != nil {
        fmt.Println("Something Went wrong")
        return
    }

    fmt.Println(resp)

    for {
        if resp.NextToken == nil {
            fmt.Println("No more pages left")
            break
        }

        params := &autoscaling.DescribeAutoScalingGroupsInput{
            NextToken: aws.String(*resp.NextToken),
        }
        resp, err := svc.DescribeAutoScalingGroups(params)

        if err != nil {
            fmt.Println("Something Went wrong")
            return
        }

        fmt.Println(resp)
    }
}

问题:我的 代码转到第二页,然后继续循环遍历相同的第二页。它不会继续到第 3 页(当 resp 中有 NextToken 时)或它不会退出(当 resp 中没有 NextToken 时) >resp).

在我的 上寻求帮助代码。我在学习

最佳答案

你内心的resp似乎是shadow你原来的 resp。在内部 for 循环中尝试这个(:= 替换为 =):

resp, err = svc.DescribeAutoScalingGroups(params)

关于Golang While 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39594169/

相关文章:

binary - 如何在 Go 中将整数转换为二进制形式,反之亦然

go - Go 中封装了检查错误的优雅方法

string - 如何在go中有效地连接字符串

go - 使用 Go/SQLX 找不到存在的 Struct 属性

xml - 将 Go 结构体转换为字符串

java - 将 Java 应用程序移植到 Go - 有什么建议吗?

postgresql - Db delete 查询总是返回 true

go - golang select语句在for循环中的性能

golang强制转换为reflect.Type

Go Lang 中的 JSON 结构到 csv