go - 学习笔记 -2
- 类型转换
- 运算符
- 输入输出函数
- 输入输出函数应用
- 流程控制语句之分支语句
- 流程控制语句之多分支语句
- 星座案例
- 分支语句嵌套
- 循环语句
- 循环语句和分支语句之间的嵌套
- for循环的作用域
- 退出循环语句
类型转换
package mainimport ("fmt""reflect""strconv"
)func main() {// 1、整型之间的转换 int8 int16 int32//var x int8 = 10//var y int16 = 20//fmt.Println(x + int8(y))// 2、字符串与整型之间的转换:strconv//var ageStr = "32"//var age, error = strconv.Atoi(ageStr)//fmt.Println("error", error) // <nil>//fmt.Println("age", age, reflect.TypeOf(age))//price := 100//priceStr := strconv.Itoa(price)//fmt.Println(priceStr, reflect.TypeOf(priceStr))// 3、strconv Parse系列函数// 将字符串转为整型//priceStr := "100"//var price, error = strconv.ParseInt(priceStr, 10, 64)//fmt.Println("error", error) // <nil>//fmt.Println("price", price, reflect.TypeOf(price))// 将字符串转为浮点型//priceStr := "100.00"//var price, error = strconv.ParseFloat(priceStr, 64)//fmt.Println("error", error) // <nil>//fmt.Println("price", price, reflect.TypeOf(price))// 将字符串转为布尔型priceStr := "100.00"var price, error = strconv.ParseBool(priceStr)fmt.Println("error", error) // <nil>fmt.Println("price", price, reflect.TypeOf(price))// 将字符串转为浮点型// 将字符串转为布尔值
}
运算符
package mainimport "fmt"func main() {// 1、 科学运算 + - * / %//var x, y = 10, 20//fmt.Println(x + y)//fmt.Println(x - y)//fmt.Println(x * y)//fmt.Println(x / y)//fmt.Println(x % y)// 计算一个数字是奇数还是偶数//fmt.Println(x%2 == 0)// 2、 比较运算符 > < = !=//fmt.Println(x > y)//fmt.Println(x < y)//fmt.Println(x == y)//fmt.Println(x != y)// 3、逻辑运算符 && ||//fmt.Println(true && false)//fmt.Println(true || false)//fmt.Println(!true && false)// 3.1 案例1//username := "yuan"//password := 123//fmt.Println(username == "yuan" && password == 123)// 3.2 案例2//name := "root"//age := 22//ret := name == "yuan" || !(age < 33)//fmt.Println(ret)// 4、赋值运算//var x = 10//x += 1 // x = x +1//fmt.Println(x)//x -= 1 // x = x -1//fmt.Println(x)//var y = 11//y++ // y = y + 1//fmt.Println(y)// 5、优先级var a, b, c = 1, 2, 3fmt.Println(a, b, c)var t = a + bfmt.Println(t)
}
输入输出函数
package mainimport "fmt"func main() {// 1、print和pringln//var name, age = "yuan", 22//fmt.Print(name, age)//fmt.Println(name, age)// 2、 printf:标准化输出//name := "yuan"//age := 24//isMarried := false//salary := 3000.549//fmt.Printf("姓名:%s 年龄:%d 婚否:%t 薪资:%.2f\n", name, age, isMarried, salary)//fmt.Printf("姓名:%v 年龄:%v 婚否:%v 薪资:%v\n", name, age, isMarried, salary)//fmt.Printf("姓名:%#v 年龄:%#v 婚否:%#v 薪资:%#v\n", name, age, isMarried, salary) 整形和浮点型//fmt.Printf("%b\n", 12) // 二进制表示:1100//fmt.Printf("%d\n", 12) // 十进制表示:12//fmt.Printf("%o\n", 12) // 八进制表示:14//fmt.Printf("%x\n", 12) // 十六进制表示:c//fmt.Printf("%X\n", 12) // 十六进制表示:c//fmt.Printf("%f\n", 3.1415) // 有小数点而无指数:3.141500//fmt.Printf("%.3f\n", 3.1415) // 3.142//fmt.Printf("%e\n", 1000.25) // 科学计数法: 1.000250e+03,默认精度为6// 设置宽度//fmt.Printf("学号:%s 姓名:%-20s 平均成绩:%-4d\n", "1001", "alvin", 100)//fmt.Printf("学号:%s 姓名:%-20s 平均成绩:%-4d\n", "1002", "zuibangdeyuanlaoshi", 98)//fmt.Printf("学号:%s 姓名:%-20s 平均成绩:%-4d\n", "1003", "x", 78)// 3、 sprintf//name := "yuan"//age := 24//isMarried := false//salary := 3000.549//info := fmt.Sprintf("姓名:%s 年龄:%d 婚否:%t 薪资:%.2f\n", name, age, isMarried, salary)//fmt.Println(info)// 4、输入函数 IO函数// 4.1 fmt.Scan:以空格或换行符分割多个值,都可以//var name string//var age int//fmt.Print("请输入姓名和年龄:")//fmt.Scan(&name, &age)//fmt.Println(name, age)// 4.2 fmt.Scanln:最好只用空格分割多个值,用换行符则默认后续输入值为空。换行即结束。//var name string//var age int//fmt.Print("请输入姓名和年龄:")//fmt.Scanln(&name, &age)//fmt.Println(name, age)// 4.3 fmt.Scanf:最好只用空格分割多个值,用换行符则默认后续输入值为空。换行即结束。var a, b intfmt.Print("请按指定格式输入:")fmt.Scanf("%d+%d", &a, &b)fmt.Println(a + b)}
输入输出函数应用
package mainimport ("fmt""strings"
)func main() {// 案例 一 : 输入以YYYY-MM-DD格式的生日,输入以 YYYY年-MM月-DD日格式//var birth string//fmt.Print("请输入年月日以 YYYY-MM-DD格式:")//fmt.Scan(&birth)//birthSlice := strings.Split(birth, "-")//fmt.Printf("您的生日是%s年-%s月-%s日", birthSlice[0], birthSlice[1], birthSlice[2])// 案例 二:输入一个英文名,如果以A/a开头,则返回true,否则返回flasevar name stringfmt.Print("请输入英文名:")fmt.Scan(&name)//var b = (strings.HasPrefix(name, "a")) || (strings.HasPrefix(name, "A"))UpName := strings.ToUpper(name)var b = strings.HasPrefix(UpName, "A")fmt.Println(b)}
流程控制语句之分支语句
package mainimport "fmt"func main() {// 分支语句// 1、单分支 if//var name = "inner"//if name == "inner" {// fmt.Println("姓名匹配成功")//}// 2、双分支 if else//var age int//fmt.Print("请输入年龄:")//fmt.Scan(&age)//if age >= 18 {// fmt.Println("年龄大于18")//} else {// fmt.Println("年龄小于18")//}// 2.1 用户输入用户名和密码,判断是否登陆成功var userName, passWord stringfmt.Print("请输入用户名:")fmt.Scan(&userName)fmt.Print("请输入密码:")fmt.Scan(&passWord)if userName == "root" && passWord == "123" {fmt.Println("登陆成功")} else {fmt.Println("登陆失败")}
}
流程控制语句之多分支语句
package mainfunc main() {// 多分枝// 1、多分支 if - else if - else if ....else/*var score intfmt.Print("请输入你的成绩:")fmt.Scan(&score)if score < 0 || score > 100 {fmt.Println("你的成绩不正确")} else if score > 90 {fmt.Println("成绩优秀")} else if score > 60 {fmt.Println("成绩良好")} else {fmt.Println("成绩不及格")}*//*var week intfmt.Print("请输入星期的数字:")fmt.Scan(&week)if week == 0 {fmt.Println("星期日")} else if week == 1 {fmt.Println("星期一")} else if week == 2 {fmt.Println("星期二")} else if week == 3 {fmt.Println("星期三")} else if week == 4 {fmt.Println("星期四")} else if week == 5 {fmt.Println("星期五")} else if week == 6 {fmt.Println("星期六")} else {fmt.Println("输入不合法")}*/// 2、switch语句,switch值判断/*var week intfmt.Print("请输入星期的数字:")fmt.Scan(&week)switch week {case 0:fmt.Println("星期日")case 1:fmt.Println("星期一")case 2:fmt.Println("星期二")case 3:fmt.Println("星期三")case 4:fmt.Println("星期四")case 5:fmt.Println("星期五")case 6:fmt.Println("星期六")default:fmt.Println("非法输入")}*/
}
星座案例
package mainimport ("fmt""os"
)func main() {var month, day intfmt.Print("请输入生日的月和日:")fmt.Scan(&month, &day)var xingZuo stringif day < 1 || day > 31 {fmt.Println("输入的日有问题")os.Exit(0)}switch month {case 1:// 日判断if day >= 1 && day <= 19 {xingZuo = "摩羯座"} else {xingZuo = "水瓶座"}case 2:// 日判断if day >= 1 && day <= 18 {xingZuo = "水瓶座"} else {xingZuo = "双鱼座"}case 3:// 日判断if day >= 1 && day <= 20 {xingZuo = "双鱼座"} else {xingZuo = "白羊座"}case 4:// 日判断if day >= 1 && day <= 19 {xingZuo = "白羊座"} else {xingZuo = "金牛座"}case 5:// 日判断if day >= 1 && day <= 20 {xingZuo = "金牛座"} else {xingZuo = "双子座"}case 6:// 日判断if day >= 1 && day <= 21 {xingZuo = "双子座"} else {xingZuo = "巨蟹座"}case 7:// 日判断if day >= 1 && day <= 22 {xingZuo = "巨蟹座"} else {xingZuo = "狮子座"}case 8:// 日判断if day >= 1 && day <= 22 {xingZuo = "狮子座"} else {xingZuo = "处女座"}case 9:// 日判断if day >= 1 && day <= 22 {xingZuo = "处女座"} else {xingZuo = "天秤座"}case 10:// 日判断if day >= 1 && day <= 23 {xingZuo = "天秤座"} else {xingZuo = "天蝎座"}case 11:// 日判断if day >= 1 && day <= 22 {xingZuo = "天蝎座"} else {xingZuo = "射手座"}case 12:// 日判断if day >= 1 && day <= 21 {xingZuo = "射手座"} else {xingZuo = "摩羯座"}default:fmt.Println("输入的月份有问题")}fmt.Println("您的星座是:", xingZuo)
}
分支语句嵌套
package mainimport "fmt"func main() {var username, password stringfmt.Print("输入用户名和密码:")fmt.Scan(&username, &password)if username == "root" && password == "123" {var score intfmt.Print("请输入你的成绩:")fmt.Scan(&score)if score < 0 || score > 100 {fmt.Println("你的成绩不正确")} else if score > 90 {fmt.Println("成绩优秀")} else if score > 60 {fmt.Println("成绩良好")} else {fmt.Println("成绩不及格")}} else {fmt.Println("用户名或密码错误!")}
}
循环语句
package mainfunc main() {/*for 表达式 { 循环语句 }*//*// 循环10次var count = 0for count < 10 {fmt.Println(count)count++}*//*// 打印1-100var count = 0for count < 100 {count++fmt.Println(count)}*//*// 打印100-1var count = 100for count > 0 {fmt.Println(count)count--}*//*// 三要素for循环var count = 0 //初始语句for count < 10 { // 条件表达式fmt.Println(count)count++ // 步进语句}*//*// 执行顺序为:count:=0 -> count<100 -> 循环体语句 -> count++ -> count<100 -> 循环体语句 -> count++.......count>100 -> breakfor count := 0; count < 10; count++ {// 循环体语句fmt.Println(count)}*//*// 基于循环,实现打印 1+2+3+4...+100var s = 0for count := 1; count < 100; count++ {s += count}fmt.Println(s)*/
}
循环语句和分支语句之间的嵌套
package mainimport "fmt"func main() {/*// 循环语句中嵌套分支语句for count := 1; count < 100; count++ {if count%2 == 0 { //判断是否为偶数fmt.Println(count)}}*/// 分支语句中嵌套循环语句for true {var num intfmt.Print("请输入一个正整数:")fmt.Scan(&num)if num > 100 {// 从小到大打印1-numfor i := 1; i <= num; i++ {fmt.Println(i)}} else {// 从大到小打印num-1for i := num; i >= 1; i-- {fmt.Println(i)}}}
}
for循环的作用域
package mainimport "fmt"func foo() {var y = 100fmt.Println(y)
}func main() {for i := 0; i < 10; i++ {fmt.Println(i)}//fmt.Println(i) // 这里无法获取到i的值
}
退出循环语句
package mainimport "fmt"func main() {// 退出循环 break/*// 示例一for i := 0; i < 10; i++ {if i == 6 {break}fmt.Println(i)}*//*// 示例二fmt.Printf(`1、普通攻击2、超级攻击3、使用道具4、逃跑5、退出游戏`)for true {var choice intfmt.Printf("请输入选择:")fmt.Scanln(&choice)//fmt.Println(choice,reflect.TypeOf(choice))if choice == 5 {fmt.Println("游戏退出")break}switch choice {case 1:fmt.Println("普通攻击")case 2:fmt.Println("超级攻击")case 3:fmt.Println("使用道具")case 4:fmt.Println("逃跑")default:fmt.Println("输入有误!")}}*/// countinue 退出当次循环// 示例一for i := 0; i < 10; i++ {if i == 6 {continue}fmt.Println(i)}}