相关疑难解决方法(0)

if语句中的struct初始化

我想检查结构是否为空,即它的所有字段是否都设置为默认值.以下按预期工作:

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)

struct if-statement go

9
推荐指数
1
解决办法
2105
查看次数

结构化for循环初始化程序

知道为什么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)

struct go composite-literals

6
推荐指数
1
解决办法
936
查看次数

在括号中初始化Go结构有什么作用?

通常,我会初始化一个结构,如:

item1 := Item{1, "Foo"}
Run Code Online (Sandbox Code Playgroud)

但是,我最近看到用parens初始化的代码:

item2 := (Item{2, "Bar"})
Run Code Online (Sandbox Code Playgroud)

reflect返回相同的Item名称.

括号中的初始化是什么以及什么时候首选?

试试这个是一些Go代码:

struct go composite-literals

3
推荐指数
1
解决办法
210
查看次数

标签 统计

go ×3

struct ×3

composite-literals ×2

if-statement ×1