go - 学习笔记 -2


类型转换

package main

import (
	"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 main

import "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, 3
	fmt.Println(a, b, c)
	var t = a + b
	fmt.Println(t)
}

输入输出函数

package main

import "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 int
	fmt.Print("请按指定格式输入:")
	fmt.Scanf("%d+%d", &a, &b)
	fmt.Println(a + b)

}

输入输出函数应用

package main

import (
	"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,否则返回flase
	var name string
	fmt.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 main

import "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 string
	fmt.Print("请输入用户名:")
	fmt.Scan(&userName)
	fmt.Print("请输入密码:")
	fmt.Scan(&passWord)
	if userName == "root" && passWord == "123" {
		fmt.Println("登陆成功")
	} else {
		fmt.Println("登陆失败")
	}
}

流程控制语句之多分支语句

package main

func main() {
	// 多分枝
	// 1、多分支 if - else if - else if ....else
	/*
		var score int
		fmt.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 int
		fmt.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 int
		fmt.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 main

import (
	"fmt"
	"os"
)

func main() {
	var month, day int
	fmt.Print("请输入生日的月和日:")
	fmt.Scan(&month, &day)

	var xingZuo string

	if 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 main

import "fmt"

func main() {

	var username, password string
	fmt.Print("输入用户名和密码:")
	fmt.Scan(&username, &password)
	if username == "root" && password == "123" {
		var score int
		fmt.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 main

func main() {
	/*
		for 表达式 { 循环语句 }
	*/

	/*
		// 循环10次
		var count = 0
		for count < 10 {
			fmt.Println(count)
			count++
		}
	*/

	/*
		// 打印1-100
		var count = 0
		for count < 100 {
			count++
			fmt.Println(count)
		}
	*/

	/*
		// 打印100-1
		var count = 100
		for 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 -> break
		for count := 0; count < 10; count++ {
			// 循环体语句
			fmt.Println(count)
		}
	*/
	/*
		// 基于循环,实现打印 1+2+3+4...+100
		var s = 0
		for count := 1; count < 100; count++ {
			s += count
		}
		fmt.Println(s)
	*/
}

循环语句和分支语句之间的嵌套

package main

import "fmt"

func main() {
	/*
		// 循环语句中嵌套分支语句
		for count := 1; count < 100; count++ {
			if count%2 == 0 { //判断是否为偶数
				fmt.Println(count)
			}
		}
	*/

	// 分支语句中嵌套循环语句
	for true {
		var num int
		fmt.Print("请输入一个正整数:")
		fmt.Scan(&num)

		if num > 100 {
			// 从小到大打印1-num
			for i := 1; i <= num; i++ {
				fmt.Println(i)
			}
		} else {
			// 从大到小打印num-1
			for i := num; i >= 1; i-- {
				fmt.Println(i)
			}
		}
	}
}

for循环的作用域

package main

import "fmt"

func foo() {
	var y = 100
	fmt.Println(y)
}

func main() {

	for i := 0; i < 10; i++ {
		fmt.Println(i)
	}
	//fmt.Println(i) // 这里无法获取到i的值
}

退出循环语句

package main

import "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 int
	   		fmt.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)
	}

}

相关推荐

  1. go - 学习笔记 -2

    2024-03-10 13:10:14       34 阅读
  2. go学习笔记

    2024-03-10 13:10:14       33 阅读
  3. GO sync.pool学习笔记

    2024-03-10 13:10:14       36 阅读
  4. go语言学习--2.函数

    2024-03-10 13:10:14       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-10 13:10:14       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-10 13:10:14       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-10 13:10:14       82 阅读
  4. Python语言-面向对象

    2024-03-10 13:10:14       91 阅读

热门阅读

  1. excel数据导入到数据库的方法

    2024-03-10 13:10:14       39 阅读
  2. 鼎盛合|无线麦克风音频方案

    2024-03-10 13:10:14       44 阅读
  3. C语言:苹果和虫子

    2024-03-10 13:10:14       38 阅读
  4. SpringBoot 集成xxl-job

    2024-03-10 13:10:14       49 阅读
  5. Xss防护

    2024-03-10 13:10:14       44 阅读
  6. c语言:日期强迫症

    2024-03-10 13:10:14       42 阅读