我有一个类型方法,可以改变类型的字段。它不接受任何参数,也不返回任何内容。该方法的主体是一个switch块。我希望能够在无操作的情况下“短路”出switch块。在我将其重构为一个类型方法之前,我可能只是从函数中返回,但这是不可能的。删除案例会破坏方法的逻辑-- default案例会改变状态,如果这个案例是匹配的,我不想这样做。基本上,我需要Python的pass的等价物。
代码:
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
}
}
}发布于 2015-04-21 23:04:01
与其他语言不同,在Go中,控制流会在switch语句的每个case处中断,除非使用fallthrough语句显式地“请求”它,否则控制不会流向下一个case。
而且在case之后也不需要语句(它可以是空的)。请参阅此示例:
i := 3
switch i {
case 3:
case 0:
fmt.Println("Hello, playground")
}它将不会打印任何内容,即使是i==3,并且在case 3之后没有语句。
如下所示:
i := 3
switch {
case i == 3:
case i == 0:
fmt.Println("Hello, playground")
}在Go Playground上试试。
https://stackoverflow.com/questions/29775836
复制相似问题