gpt4 book ai didi

go - fmt.Printf 不执行内部循环

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

我正在用 Go 语言编写一个小程序来通过主机名检查服务器的状态是否已启动(在服务器列表之外)。我有一个函数,一旦它们从 http.GET 全部检索并存储到类型服务器的 slice 中,就会迭代服务器类型。

我可以登录(在下面注释掉)并看到这两个评估都正确:

// fmt.Printf("Server: %s - Status: %s\n", server.Name, status)
// fmt.Printf("%t\n", name == strings.ToLower(server.Name))

两者都有预期的结果,但是当我运行程序时,if 语句中的 fmt.Printf() 调用没有打印到控制台。

    func getServerStatus(name string) {
servers := getAllServers()
for _, server := range servers {
status := boolToStatusString(server.Status)
// fmt.Printf("Server: %s - Status: %s\n", server.Name, status)
// fmt.Printf("%t\n", name == strings.ToLower(server.Name))
if server.Name == strings.ToLower(name) {
fmt.Printf("%s is %s", name, status)
}
}
}

我已经尝试将此函数作为 goroutine 运行,使用 string 类型的 channel 来存储结果并调用 Printf 在此函数之外,但任何时候我 go run main.go 它只是执行并且不打印任何内容。

已解决:在 if 语句中将两者都评估为 strings.ToLower 解决了这个问题。

最佳答案

事实证明评估不正确,因为我没有在两者上使用 strings.ToLower() 导致语句始终为 false,因为数据在手前或执行时未经过清理。

感谢@mkopriva

关于go - fmt.Printf 不执行内部循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48385214/

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