Go:条件语句、循环语句
一、条件语句
package main import ( "fmt" "io/ioutil" ) // if的条件不需要括号 func xx(i int) int { if i == 1 { return 1 } else if i == 2{ return 2 } else { return 0 } } func eval(a, b int, operator string) int { var result int switch operator { case "+": result = a + b case "-": result = a - b case "*": result = a * b case "/": result = a / b default: // panic相当于报错 panic("unsupported operator:" + operator) } return result } func getGrade(score int) string { grade := "" // switch后面可以没有表达式,在case中实现即可 switch { case score == 100: grade = "A+" case score >= 90 && score< 100: grade = "A" case score >= 80 && score< 90: grade = "B" } return grade } func main() { fmt.Println(xx(10)) // 0 const filename = "test.txt" if contents, err := ioutil.ReadFile(filename); err != nil { fmt.Println(err) } else { fmt.Printf("%s\n", contents) /* 千山鸟飞绝,万径人踪灭。 孤舟蓑笠翁,独钓寒江雪。 */ } fmt.Println(eval(10, 20, "+")) // 30 fmt.Println(getGrade(95)) // A }
二、循环语句
package main import ( "bufio" "fmt" "os" "strconv" ) // for的条件不需要括号 // for的条件可以省略初始条件、结束条件、递增表达式 func convertToBinary(i int) string { result := "" for ; i > 0; i /= 2 { tmp := i % 2 result = result + strconv.Itoa(tmp) } return result } func printFileContent(filename string) { file, err := os.Open(filename) if err != nil { panic(err) } scanner := bufio.NewScanner(file) // 只有结束条件 for scanner.Scan() { fmt.Println(scanner.Text()) } } func foreverCircle() { // 死循环 for { fmt.Println("1") } } func printStr1(s string) { for index, value := range s { fmt.Printf("index:%d value:%c\n", index, value) /* index:0 value:H index:1 value:e index:2 value:l index:3 value:l index:4 value:o index:5 value: index:6 value:W index:7 value:o index:8 value:r index:9 value:l index:10 value:d */ } } func printStr2(s string) { for index, value := range s { if index < 5 { fmt.Printf("index:%d value:%c\n", index, value) /* index:0 value:H index:1 value:e index:2 value:l index:3 value:l index:4 value:o */ continue } else if index == 5 { break } } } func main() { fmt.Println("1") fmt.Println( convertToBinary(1), // 1 convertToBinary(2), // 01 convertToBinary(5), // 101 convertToBinary(10), // 0101 ) printFileContent("test.txt") /* 千山鸟飞绝,万径人踪灭。 孤舟蓑笠翁,独钓寒江雪。 */ //foreverCircle() printStr1("Hello World") printStr2("Hello World") }
三、goto语句(不推荐使用)
package main import "fmt" func func1() { LABEL: for i := 0; i <= 5; i++ { for j := 0; j <= 5; j++ { if j == 4 { continue LABEL // LABEL相当于标志,程序跳到此处执行 } fmt.Printf("i is: %d, and j is: %d\n", i, j) } } } func func2() { // 相当于for循环 i := 0 LABEL: fmt.Println(i) i++ if i == 5 { return } goto LABEL } func main() { func1() func2() }