On Mon, May 11, 2020 at 11:53 AM Saied Seghatoleslami <seghatoleslam...@gmail.com> wrote: > > I have seen a ticket on this topic (or something related to it) on Github but > I thought I would ask this community first: > > In first instance, I got "suspect or: role != admin || role != superadmin" > In the second instance, it works just fine. I have verified that role is > string type (with %T verb). > > since role can be admin, superadmin, or anything else for that matter, why > would the first case generate the suspect message, and the second case works > fine. > > I am running go version go1.13.4 darwin/amd64 on a Mac > > > First Instance: > > const ( > admin = "admin" > superadmin = "superadmin" > ) > > invalidRole := role != admin || role != superadmin
This sets invalidRole if role != admin or if role != superadmin. Let's say role is admin. Then role != superadmin is true, so invalidRole is set to true. Let's say role is superadmin. Then role != admin is true, so invalidRole is set to true. Let's say role is frobozz. Then role != admin is true, so invalidRole is set to true. In other words, invalidRole is always set to true. This is a "suspect or". > Second instance: > > const ( > admin = "admin" > superadmin = "superadmin" > ) > > validRole := role == admin || role == superadmin There is no such confusion here. Ian -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/CAOyqgcXuZNvdo2nYz4wmCpberzG2obeHDv87ThRZjdAipQrkTA%40mail.gmail.com.