我想检查结构是否为空,即它的所有字段是否都设置为默认值.以下按预期工作:
package main
import "fmt"
type MyStruct struct {
field1 string
field2 int
}
func main() {
var mine MyStruct
empty := MyStruct{}
// Check if mine is empty.
if mine == empty {
fmt.Print("mine is empty")
}
}
Run Code Online (Sandbox Code Playgroud)
我想缩短这一点,所以我将空结构初始化移动到if语句中:
func main() {
var mine MyStruct
// Check if mine is empty.
if mine == MyStruct{} {
fmt.Print("mine is empty")
}
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用:syntax error: unexpected }, expecting := or = or comma.即使以下情况也不起作用,尽管它看起来与第一个示例几乎相同:
func main() {
var mine MyStruct …Run Code Online (Sandbox Code Playgroud) 知道为什么for循环初始化程序中的这个结构表达式在编译时会出现语法错误吗?在这种情况下,指向struct的指针工作正常但是我需要像bellow这样的局部变量.谢谢你的建议!
type Request struct {
id int
line []byte
err error
}
go func() {
for r := Request{}; r.err == nil; r.id++ {
r.line, r.err = input.ReadSlice(0x0a)
channel <- r
}
}()
Run Code Online (Sandbox Code Playgroud) 通常,我会初始化一个结构,如:
item1 := Item{1, "Foo"}
Run Code Online (Sandbox Code Playgroud)
但是,我最近看到用parens初始化的代码:
item2 := (Item{2, "Bar"})
Run Code Online (Sandbox Code Playgroud)
reflect返回相同的Item名称.
括号中的初始化是什么以及什么时候首选?
试试这个是一些Go代码: