代码之家  ›  专栏  ›  技术社区  ›  nestlejscrunch

为什么if条件总是计算为false?【GoLang】

go
  •  0
  • nestlejscrunch  · 技术社区  · 2 年前

    我有以下if条件来计算字符串的长度 foo -它应该始终为16或19个字符。看起来像是 abcd-efgh-ijkl-mnop abcdefghijklmnop .

    func ValidateFoo(...) error {
    
        if len(foo) != 16 || len(foo) != 19 {
            return fmt.Errorf("foo should be 16 or 19 characters, %q %d",
                foo,
                len(foo),
            )
        }
    ...
    }
    

    (在我看来)这在语法上是正确的,但当我对这个函数运行测试时,它们失败了,出现了“foo应该是16或19个字符”的错误。

    奇怪的是,在 Errorf() , 这个 len() 始终为16或19个字符 ,这显然毫无意义。如:

    got error: supplied key is not 16 or 19 characters, key "foo should be 16 or 19 characters" 19

    我的if语句错了吗?

    编辑:

    我的if语句是错误的。应使用逻辑AND not OR https://stackoverflow.com/a/72889607/8859720

    2 回复  |  直到 2 年前
        1
  •  3
  •   Burak Serdar    2 年前

    if语句始终为true。因为它是假的, len(foo) 必须同时为16和19。使用 && || .