首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >no-op/在go中显式不执行任何操作

no-op/在go中显式不执行任何操作
EN

Stack Overflow用户
提问于 2015-04-21 22:56:08
回答 1查看 15.2K关注 0票数 12

我有一个类型方法,可以改变类型的字段。它不接受任何参数,也不返回任何内容。该方法的主体是一个switch块。我希望能够在无操作的情况下“短路”出switch块。在我将其重构为一个类型方法之前,我可能只是从函数中返回,但这是不可能的。删除案例会破坏方法的逻辑-- default案例会改变状态,如果这个案例是匹配的,我不想这样做。基本上,我需要Python的pass的等价物。

代码:

代码语言:javascript
复制
func (parser *Parser) endSectionName () {
    state = parser.State
    buffer = parser.buffer
    results = parser.results
    switch {
        case state.HasFlag(IN_ESCAPED) {
            // ???
        }
        case !inSection(state) {
            return state, NotInSectionError
        }
        case !state.HasFlag(IN_SECTION_NAME) {
            state.Reset()
            return state, errors.New("Parsing error: Not in section name")
        }
        default {
            state.RemoveFlag(IN_SECTION_NAME)
            s := buffer.String()
            results[s] = new(Section)
            buffer.Reset()
            return state, nil
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-21 23:04:01

与其他语言不同,在Go中,控制流会在switch语句的每个case处中断,除非使用fallthrough语句显式地“请求”它,否则控制不会流向下一个case

而且在case之后也不需要语句(它可以是空的)。请参阅此示例:

代码语言:javascript
复制
i := 3
switch i {
case 3:
case 0:
    fmt.Println("Hello, playground")
}

它将不会打印任何内容,即使是i==3,并且在case 3之后没有语句。

如下所示:

代码语言:javascript
复制
i := 3
switch {
case i == 3:
case i == 0:
    fmt.Println("Hello, playground")
}

Go Playground上试试。

票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29775836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档