Go的 switch 非常灵活,表达式不必是常量或整数,执行的过程从上至下,直到找到匹配项,不要break;
var score =98var result stringswitch score/10 { case 9,10:result="优秀" case 8:result="良好" case 6,7:result="及格" default:result="不及格"}
switch 后面的表达式甚至不是必需的
var score =-1var result stringswitch { case score<0:result="负数" case score=0:result="零" case score>0:result="正数" }
利子:
package mainimport ( "log" )import ( "github.com/lxn/walk" . "github.com/lxn/walk/declarative")var le *walk.LineEditvar sport,maths,english *walk.RadioButtonfunc main() { if _, err := MainWindow1.Run(); err != nil { log.Fatal(err) } log.Fatal(Bind("enabledCB.Checked"))}var MainWindow1=MainWindow{ Title: "MainWindow", MinSize: Size{300, 200}, Layout: VBox{}, Children: widget,}var widget=[]Widget{ LineEdit1, RadioButtonSport, RadioButtonMaths, RadioButtonEnglish, PushButtonOK,}var LineEdit1=LineEdit{ AssignTo: &le,}var RadioButtonSport=RadioButton{ AssignTo: &sport, Text: "体育系", }var RadioButtonMaths=RadioButton{ AssignTo: &maths, Text: "数学系", }var RadioButtonEnglish=RadioButton{ AssignTo: &english, Text: "英语系", }var PushButtonOK=PushButton{ Text: "OK", OnClicked:OK_Clicked,}func OK_Clicked(){ switch { case english.Checked(): le.SetText("英语系") case sport.Checked(): le.SetText("体育系") case maths.Checked(): le.SetText("数学系") }}
RadioButton为单选按钮,可以分组,
radiobuttongroup和radiobuttongroupbox