分支結構
package mainimport ("fmt""strconv"
)/*
1.順序結構
2.分支結構
3.循環結構
*//*
if 條件1 {// 條件1為真時執行的代碼
} else if 條件2 {// 條件1為假但條件2為真時執行的代碼
} else {// 所有條件均為假時執行的代碼
}一種特殊的條件分支結構if statement;條件{執行語句}
*/
func main() {if v, e := strconv.Atoi("abc"); e != nil {fmt.Println("轉換失敗", e)} else {fmt.Println("轉換成功", v)}
}
switch 接收用戶從鍵盤輸入的成績,輸出相應的成績等級
package mainimport ("fmt""strconv"
)/*
switch{
case 變量范圍1:執行語句1case 變量范圍2:執行語句2default:執行語句3}
*/
func main() {//接收用戶從鍵盤輸入的成績,輸出相應的成績等級var score intfmt.Println("請輸入成績")fmt.Scan(&score)switch {case score < 60:fmt.Println("不及格")case score < 90:fmt.Println("良好")default:fmt.Println("優秀")}
}
switch 登錄選擇界面
package mainimport ("fmt"
)func main() {var choice intfmt.Println("please input your choice:")fmt.Scan(&choice)switch choice {case 1:fmt.Println("選擇了登錄")case 2:fmt.Println("選擇了注冊")default:fmt.Println("輸入有誤")}}
循環結構
for循環
package mainimport ("fmt"
)func main() {for i := 0; i < 10; i++ {fmt.Println(i)}//第二種方法 i := 0for i < 10 {fmt.Println(i)i++}
}
類似while循環
package mainimport ("fmt"
)func main() {var choice stringfor choice != "quit" {fmt.Println("請輸入你的選擇:")fmt.Scan(&choice)}
}
range
package mainimport ("fmt"
)func main() {for k, v := range "xyz" {fmt.Printf("key:%d,value:%c\n", k, v) //key是索引,value是字符-->key:0,value:xfmt.Println("key:", k, "value:", v) //key是索引,value是字符-->key: 0 value: 120}
}
死循環
package mainimport ("fmt"
)func main() {for {//無限死循環 可以通過某些條件判斷 用break跳出循環}
}
break 、continue
package mainimport ("fmt"
)func main() {//break --》跳出本次循環//continue --》跳過本次循環,繼續下一次循環for k, v := range "xyz" {fmt.Println("外層循環:", k, string(v))for m, n := range "abc" {if string(n) == "b" {//continue //跳過本次循環,繼續下一次循環//一般用于后續還有代碼要執行,跳過本次循環break //跳出內層循環} else {fmt.Println("****內層循環:", m, string(n))}}}
}
題目:用戶登錄
接收用戶名和密碼輸入,判斷用戶明是否為root,密碼是否為123456
如果是,輸出登錄成功
輸入錯誤,有三次重試機會,三次用完提示登錄失敗
package mainimport ("fmt"
)func main() {var username, password stringfor i := 0; i < 3; i++ {fmt.Println("請輸入用戶名:")fmt.Scan(&username)fmt.Println("請輸入密碼:")fmt.Scan(&password)if username == "root" && password == "123456" {fmt.Println("登錄成功")break} else {fmt.Println("用戶名或密碼錯誤,請重新輸入,還有", 2-i, "次機會")}}if username != "root" || password != "123456" {fmt.Println("登錄失敗")}
}
for循環有自己的空間
for循環內創建的變量只能在循環體內使用
for循環創建的變量和父作用域的同名變量互不干涉
package mainimport ("fmt"
)var a int
func main() {//for循環有自己的空間a := 100fmt.Printf("outside a is :%d,address is %x \n", a, &a)for _, v := range "xyz" {fmt.Println("拿到的值為:", string(v))a := 1000fmt.Printf("inside a is :%d,adress is %x \n", a, &a)}
}
goto語句
package mainimport ("fmt"
)var a int
func main() {//goto語句 慎用num1 := 1
ABC:fmt.Println(num1)for num1 < 10 {num1++if num1 == 5 {goto ABC}}
}