Go 读线和验证
在路径/操作/验证中的一个文件中: 在调用函数的下一个文件中:Go 读线和验证,go,Go,在路径/操作/验证中的一个文件中: 在调用函数的下一个文件中: package prompts import ( "bufio" "fmt" "os" val "thirsty/operations" ) // AskEnv prompts for Environment func AskEnv() { reader := bufio.NewReader(os.Stdin) fmt.Print("Enter environment (ex: d
package prompts
import (
"bufio"
"fmt"
"os"
val "thirsty/operations"
)
// AskEnv prompts for Environment
func AskEnv() {
reader := bufio.NewReader(os.Stdin)
fmt.Print("Enter environment (ex: dev, qa, prd): ")
environment, _ := reader.ReadString('\n')
fmt.Println(environment)
env := val.CheckEnv(environment)
if !env {
fmt.Printf("Invalid Argument: No environment found for %s", environment)
return
}
os.Setenv("env", environment)
fmt.Printf("Environment set to %s", environment)
}
在提示过程中,我尝试了qa或dev,但我不断得到错误的响应。我不知道为什么会发生这种情况,希望您能提供一些见解。在返回的字符串中包含分隔符,因此您的CheckEnv函数最终会执行以下操作,例如:
return "qa\n" == "qa" || "qa\n" == "dev" || "qa\n" == "prd"
当然,这永远不会变成现实
您可以通过使用字符串之一.Trim*来解决此问题,例如,删除尾随行结尾字符和其他不需要的空白,如下所示:
func CheckEnv(environment string) bool {
env := strings.ToLower(strings.TrimSpace(environment))
return env == "qa" || env == "dev" || env == "prd"
}
从文档中:ReadString一直读取,直到输入中第一次出现delim,返回一个包含数据的字符串,直到delimiter@JimB这是否意味着我需要解析出分隔符?函数是TrimSpace@JimB忘记了第二个论点:“我仍然会使用TrimSpace,因为这仍然会在windows上留下一个尾随\r,所以您最好在使用时清除任何其他流氓空白
func CheckEnv(environment string) bool {
env := strings.ToLower(strings.TrimSpace(environment))
return env == "qa" || env == "dev" || env == "prd"
}