gpt4 book ai didi

string - 从字符串到结构 Golang

转载 作者:数据小太阳 更新时间:2023-10-29 03:22:18 25 4
gpt4 key购买 nike

我创建了一个函数来将特定字符串(派生自 [] 字节)转换为结构。在我正在构建的程序中,进行了加密和解密,并且在这两个 channel 之间,数据通过 JSON 传输。我建议的功能有效,但是当字符串变得很长时,处理时间会很长。我想问的是,是否有人知道如何加快此功能或如何更好地管理这种情况。

这是函数

func Datadecrypt(input []byte) Data {

s := string(input)

vals := strings.Replace(s," "," ",-1)

part := strings.Fields(vals)

c := strings.Split(s, "int=")[1]
co := strings.Split(c, ")")[0]

count, err := strconv.Atoi(co)
if err != nil {
log.Fatal(err)
}

var stringa string

for j := 0; j<len(part); j++ {
if strings.ContainsAny(part[j], ":") {
stringa = stringa+" "+part[j]
} else {
stringa = stringa+","+part[j]
}
}

var interpart []map[string]string
var result Data

var i = 0

for {

split := strings.Split(stringa, "[")[2+i]

splitend := strings.Split(split, "]")[0]

control := strings.Replace(splitend," "," ",-1)

mapst := mapstring.StrToMS(control)

interpart = append(interpart, mapst)

i++

if i >= count {
break
}
}

result = Data{Count: count, Results: interpart}

return result
}

这是结构

type Data struct {
Count int `json:"count"`
Results []map[string]string `json:"result"`
}

这是从 s:= string (input) 派生的字符串

"Count=\"%!s(int=107)\"\nResults=\"[map[MATRICOLA:2 NOMEmy:value COGNOMEmy:value] map[MATRICOLA:7 NOMEmy:value COGNOMEmy:value] map[MATRICOLA:5 NOMEmy:value COGNOMEmy:value] map[MATRICOLA:6 NOMEmy:value COGNOMEmy:value]]\"\n"

我上面写的字符串是使用JSON响应打印出来的

这是输入字符串,不是 JSON

Count="%!s(int=107)"
Results="[map[MATRICOLA:2 NOMEmy:value COGNOMEmy:value] map[MATRICOLA:7 NOMEmy:value COGNOMEmy:value] map[MATRICOLA:5 NOMEmy:value COGNOMEmy:value] map[MATRICOLA:6 NOMEmy:value COGNOMEmy:value]]"

这是我通过函数得到的结果

{107 map[MATRICOLA:2 NOMEmy:value COGNOMEmy:value] map[MATRICOLA:7 NOMEmy:value COGNOMEmy:value] map[MATRICOLA:5 NOMEmy:value COGNOMEmy:value] map[MATRICOLA:6 NOMEmy:value COGNOMEmy:value]]}

提前致谢

最佳答案

这不是您问题的答案,但可能是您问题的解决方案。如果我完全错了,请发表评论。

输入的字符串看起来像是通过 fmt.Printf()

生成的
"Count=\"%!s(int=107)\"\nResults=\"[map[MATRICOLA:2 NOMEmy:value COGNOMEmy:value] map[MATRICOLA:7 NOMEmy:value COGNOMEmy:value] map[MATRICOLA:5 NOMEmy:value COGNOMEmy:value] map[MATRICOLA:6 NOMEmy:value COGNOMEmy:value]]\"\n"

https://play.golang.org/p/pRWUtRKikEh

    count := 107
results := "[map[MATRICOLA:2 NOMEmy:value COGNOMEmy:value] map[MATRICOLA:7 NOMEmy:value COGNOMEmy:value] map[MATRICOLA:5 NOMEmy:value COGNOMEmy:value] map[MATRICOLA:6 NOMEmy:value COGNOMEmy:value]]"

fmt.Printf("Count=%s\nResults=%s", count, results)

因此,如果您能够将打印语句更改为 fmt.Printf("Count=%d\nResults=%s", count, results),输出将是正确的。 https://play.golang.org/p/g45_TiHMFsG

关于string - 从字符串到结构 Golang,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51724151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com