gpt4 book ai didi

go - 结果中没有 [] 的 float64 到字符串

转载 作者:IT王子 更新时间:2023-10-29 02:37:14 25 4
gpt4 key购买 nike

我正在尝试扫描一些文件夹并对它们进行排序以找到最高版本号。 {"10.1","9.6","7.2"} 然后构建路径。但是,我得到的路径中有 [] 方括号,我需要去掉它们。

这是我得到的:

C:\Program Files\PostgreSQL\[10.1]\bin\psql.exe

        root := "C:/Program Files/PostgreSQL"


files, err := ioutil.ReadDir(root)
if err != nil {
return "", err
}

folders := []float64{}
for _, f := range files {
if f.IsDir() {
if converted, err := strconv.ParseFloat(f.Name(),64); err == nil {
folders = append(folders, converted)
}
}
}

sort.Float64s(folders)

log.Println(folders[len(folders)-1:])

highestVersion := fmt.Sprintf("%v",folders[len(folders)-1:])

execPath = filepath.Join(root, highestVersion, "bin", "psql.exe")
log.Println(execPath)

最佳答案

问题在这一行:

highestVersion := fmt.Sprintf("%v",folders[len(folders)-1:])

正如某些人提到的,%v 格式说明符是“值”的简写。现在让我们看看您的值(value):

文件夹[len(文件夹)-1:]

你在这里说的是,“从 folders 开始,从 len(folders-1) 开始 slice ”。您的变量是一个 slice ,仅包含 folders 中的最后一项。

slice 是通过在值周围使用括号来打印的,并且由于您有一个值,因此它会打印被方括号括起来的值。

如果您只想打印包含在该位置的 float ,您应该删除注释中指定的冒号。我建议使用 fmt 动词 %f%g 进行打印,具体取决于您的用例。

更多信息可以在 pkg/fmt docs 中找到关于哪些动词可用于 printf 和其他相关函数。

关于go - 结果中没有 [] 的 float64 到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51546051/

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