我有一个类型方法,可以改变类型的字段.它不需要参数,也不会返回任何参数 该方法的大部分是一个switch块.我希望能够通过无操作"短路"出switch块.在我将它重构为类型方法之前,我只是退出了函数,但那就是了.删除案例会破坏方法的逻辑 - default案例会改变状态,如果这种情况匹配,我不想这样做.pass基本上我需要相当于Python的.
码:
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
}
}
}
Run Code Online (Sandbox Code Playgroud)
icz*_*cza 12
与其他语言不同,在Go中,控制流在每个语句处中断,控件不会流入下case一个switch语句,case除非明确地" fallthrough声明"该语句.
并且在case(它可以为空)之后也不需要声明.看这个例子:
i := 3
switch i {
case 3:
case 0:
fmt.Println("Hello, playground")
}
Run Code Online (Sandbox Code Playgroud)
它即使i==3没有打印也没有任何声明case 3.
与此相同:
i := 3
switch {
case i == 3:
case i == 0:
fmt.Println("Hello, playground")
}
Run Code Online (Sandbox Code Playgroud)
在Go Playground尝试一下.