如果检查结构类型golang
如何为Golang中的if语句使用临时结构类型如果检查结构类型golang,go,Go,如何为Golang中的if语句使用临时结构类型 struct card { suit string rank string } d := newDeck() //basically a list of cards c := card{"Spades", "A"} if d[0] != c { //works } if d[0] != card{"Spades", "A"} { //doesn't work } 是否总是需要声明变量来比较结构类型,或者是否有办法使其像代码
struct card {
suit string
rank string
}
d := newDeck() //basically a list of cards
c := card{"Spades", "A"}
if d[0] != c { //works
}
if d[0] != card{"Spades", "A"} { //doesn't work
}
是否总是需要声明变量来比较结构类型,或者是否有办法使其像代码的最后一行那样更短?Golang不支持使用
=
运算符比较对象。改用reflect.DeepEqual
if !reflect.DeepEqaul(d[0], card{"Spades", "A"}) {
#Your logic
}
报告说:
当使用LiteralType的TypeName形式的复合文字显示为“if”、“for”或“switch”语句块的关键字和左大括号之间的操作数,并且复合文字未包含在括号、方括号或大括号中时,就会产生解析歧义。在这种罕见的情况下,literal的大括号被错误地解析为引入语句块的大括号。要解决歧义,复合文字必须出现在括号内
添加括号以解决歧义:
if d[0] != (card{"Spades", "A"}) {
fmt.Println("hello")
}