在路径/operations/validate
中的一个文件中:
package operations
import (
"strings"
)
func CheckEnv(environment string) bool {
env := strings.ToLower(environment)
return env == "qa" || env == "dev" || env == "prd"
}
在下一个调用该函数的文件中:
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
,但一直收到false
作为响应。我不知道为什么会这样,请提供任何见解。
答案 0 :(得分:1)
bufio.Reader.ReadString
在返回的字符串中包含定界符,因此您的CheckEnv
函数最终会这样做(例如):
return "qa\n" == "qa" || "qa\n" == "dev" || "qa\n" == "prd"
这当然永远不会返回true
。
您可以通过使用TrimSpace
之类的strings.Trim*
之一来删除尾行结尾字符和其他不需要的空格,例如:
func CheckEnv(environment string) bool {
env := strings.ToLower(strings.TrimSpace(environment))
return env == "qa" || env == "dev" || env == "prd"
}