Golang 将字符串化列表转换为 slice

标签 go

我有一个工作流程,其中创建一个列表并将其发送到 SQS 队列(因此​​必须转换为字符串),稍后由 Go 函数拾取该列表。我需要解析以下字符串化列表:

"['bucket___file1.csv___groupFile.csv___custom', 'bucket___file2.csv___groupFile.csv___modeler']"

像这样的字符串片段:

[]string{'bucket___file1.csv___groupFile.csv___custom', 'bucket___file2.csv___groupFile.csv___modeler'}

这样我就可以通过索引访问和解析它们。我该怎么做?

最佳答案

您可以将字符串转换为 json 并使用 json 解码器获取字符串数组

package main

import (
    "fmt"
    "encoding/json"
    "strings"
)

func main() {
    inputString := "['bucket___file1.csv___groupFile.csv___custom', 'bucket___file2.csv___groupFile.csv___modeler']"
    // convert string to json string

    jsonString := strings.ReplaceAll(inputString, "'", "\"")

    var expectedStringArray []string
    json.Unmarshal([]byte(jsonString), &expectedStringArray)

    fmt.Println(expectedStringArray)
}

这应该可以解决您的问题

请注意,当数组字符串之一中有 ' 时,上述解决方案将会失败。

对于可靠的解决方案,您可以将适当的 JSON 推送到队列,并且可以跳过我上面提供的解决方案中的转换部分。

关于Golang 将字符串化列表转换为 slice ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63585421/

相关文章:

go - Printf 在 golang 的 http 处理程序中不起作用

go - emersion/go-imap - 如何检索和列出看不见的消息

json - 解码 json 以 float 。为什么需要 float64?

go - 第二个bufio.Scanner for stdin不读取任何内容

go - `go get cloud.google.com/go/cloudtasks/apiv2`的一些问题;未定义: grpc. RoundRobin

go - 如何从 tinygo webassembly 目标返回对象

go - 如何使用 Go 的 os/exec 评估环境变量

go - 我可以在没有路由器的情况下直接从主 Controller 调用 Controller 吗?

node.js - 您如何在Go中获得“实时”控制台输出?

去达到进程的最大线程数吗?