Go 提示在 if 语句中实例化结构。为什么?是否有不涉及临时变量或新函数的正确语法?
type Auth struct {
Username string
Password string
}
func main() {
auth := Auth { Username : "abc", Password : "123" }
if auth == Auth {Username: "abc", Password: "123"} {
fmt.Println(auth)
}
}
错误(在 if 语句行):语法错误:意外 :,期望 := 或 = 或逗号
这会产生同样的错误:
if auth2 := Auth {Username: "abc", Password: "123"}; auth == auth2 {
fmt.Println(auth)
}
这按预期工作:
auth2 := Auth {Username: "abc", Password: "123"};
if auth == auth2 {
fmt.Println(auth)
}
最佳答案
您必须用括号括住 == 的右侧。否则 go 会认为 '{' 是 'if' block 的开始。以下代码工作正常:
package main
import "fmt"
type Auth struct {
Username string
Password string
}
func main() {
auth := Auth { Username : "abc", Password : "123" }
if auth == (Auth {Username: "abc", Password: "123"}) {
fmt.Println(auth)
}
}
// Output: {abc 123}
关于go - 为什么在 Go 的 if 语句中创建结构是非法的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15773969/