Go:條件語句、循環語句
阿新 • • 發佈:2019-05-12
nil res light nbsp can pri toa txt func
一、條件語句
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() }
Go:條件語句、循環語句