Go语言基础第02天(运算符和流程控制)

1.字符和字符串

func main0101() {
	var b string ="hello\077world"
	fmt.Println(b)
}

在这里插入图片描述

func main() {
	var a byte ='a'
	var b string ="a"//'a''\0'
	fmt.Println(a==b)
}

在这里插入图片描述
不能比较

func main() {
	//var a byte ='a'
	//var b string ="a"//'a''\0'
	//换行\n  \\表示一个\  一遍用于文件操作
	//var b string ="hello\nworld"
	var b string = "hello\077world"
	//%s 遇到\0停止
	//fmt.Printf("%s",b)
	fmt.Println(b)
	//fmt.Println(a==b)
}
func main0102() {
	//var str string="hello world"
	//在go语言中一个汉字算作3个字符 为了和linux同一处理
	var str string = "我爱你woaini"
	//计算字符串个数
	num := len(str) //4  //8 //12
	fmt.Println(num)
}

2.占位符

func main0201() {
	//var a int64 =10
	a:=10//int
	fmt.Printf("%d\n",a)
	//var b float64 =10
	b:=10.0//float64
	//b:=10//int
	fmt.Printf("%f\n",b)
	var c bool =true
	fmt.Printf("%t\n",c)
	var d byte ='A'
	fmt.Printf("%c\n",d)
	var e string ="hello"
	fmt.Printf("%s\n",e)

	fmt.Printf("%p\n",&a)

	//%T  打印变量对应的数据类型
	fmt.Printf("%T\n",a)
	fmt.Printf("%T\n",b)
	fmt.Printf("%T\n",c)
	fmt.Printf("%T\n",d)
	fmt.Printf("%T\n",e)
	//%% 会打印一个%
	fmt.Printf("35%%")
}
func main() {
	//计算机能够识别的进制  二进制 八进制 十进制 十六进制

	a := 123   //十进制数据
	b := 0123  //八进制数据 以0开头的数据是八进制
	c := 0xabc //十六进制  以0x开头的数据是十六进制
	//go语言中不能直接表示二进制数据

	//fmt.Println(a)
	//fmt.Println(b)
	//fmt.Println(c)
	//%b 占位符 表示输出一个二进制数据
	//fmt.Printf("二进制值为:%b\n",a)
	//fmt.Printf("二进制值为:%b\n",b)
	//fmt.Printf("二进制值为:%b\n",c)
	//%o 占位符 表示输出一个八进制数据
	//fmt.Printf("%o\n",a)
	//fmt.Printf("%o\n",b)
	//fmt.Printf("%o\n",c)
	//%x %X 占位符 表示输出一个十六进制数据
	fmt.Printf("%X\n", a)
	fmt.Printf("%X\n", b)
	fmt.Printf("%X\n", c)
	s := ' '
	fmt.Printf("%T", s)
}

在这里插入图片描述

3.常量

func main0301() {
	//常量定义和使用
	//在程序运行过程中其值不能发生改变的量 成为常量
	//常量的存储位置在数据区
	//栈区 系统为每一个应用程序分配1M空间用来存储变量  在程序运行结束系统会自动释放
	var s1 int =10
	var s2 int =20
	//常量的存储位置在数据区 不能通过& 取地址来访问
	const a int = 10

	fmt.Println(&s1)
	fmt.Println(&s2)
	//a=20//常量的值不允许修改

	fmt.Println(a)
}

在这里插入图片描述

func main0302() {
	//常量一般用大写字母表示
	const MAX int = 10
	b := 20
	c := MAX + b
	fmt.Println(c)
	//字面常量
	fmt.Println(123)
	fmt.Println("hello world")
	//硬常量 32
	d := c + 32
	e := "hello"
	e = e + "world"
	fmt.Println(d)
	fmt.Println(e)
}

4.枚举

func main() {

	const (
		a = iota //0//静止
		b = iota //1//移动
		c = iota //2//普通攻击
		d = iota
	)

	fmt.Println(a)
	fmt.Println(b)
	fmt.Println(c)
	fmt.Println(d)

	//定义变量 为 状态
	value := a
	fmt.Println(value)
	value = b
	fmt.Println(value)

}

在这里插入图片描述

func main() {
	//const(
	//	a=iota//0
	//	b//1
	//	c//2
	//	d//3
	//	e//4
	//)

	//如果定义枚举是常量写在同一行值相同 换一行值加一
	//在定义枚举时可以为其赋初始值 但是换行后不会根据值增长
	const (
		a    = 10
		b, c = iota, iota
		d, e
	)

	fmt.Println(a)
	fmt.Println(b)
	fmt.Println(c)
	fmt.Println(d)
	fmt.Println(e)
}

在这里插入图片描述

5.算术运算符

除法运算符:

//除法运算符
func main0501() {
	a:=10//int
	b:=0//int
	//整型数据相除结果为整型
	//除数不能为0
	c:=a/b
	fmt.Println(c)
}

取余运算符:

//取余运算符
func main0502(){
	a:=10
	b:=2
	//取余运算符  取模运算符
	//取余运算符只能用于整型数据
	//取余运算符除数不能为0
	c:=a%b
	fmt.Println(c)
}

自增自减运算符:

//自增自减运算符
func main0503(){
	a:=10
	//a=a+1
	//++ --只能写在变量的后面 叫做后自增后自减
	//a++//自增运算符
	//a--//自减运算符
	//不能将自增自减运用在表达式中
	//b=a--//err
	fmt.Println(a)
	//fmt.Println(b)
}

6.类型转换

func main0601() {
	a:=10
	b:=3.99
	//将不同类型转成相同类型进行计算操作
	//类型转换格式 数据类型(变量) 数据类型(表达式)
	//c:=float64(a)*b
	//将浮点型转成整型数据 保留浮点型整数部分 舍弃小数部分  不会进行四舍五入
	c:=a*int(b)
	fmt.Println(c)
}

在这里插入图片描述

func main0602() {
	//虽然int32和int64都是整型 单数不允许相互转换
	//只有类型匹配的数据才能进行计算
	//在go语言中习惯将低类型转成高类型  保证数据完整性
	var a int32 = 10
	var b int64 = 20
	c := int64(a) + b
	fmt.Println(c)
	fmt.Printf("%T", c)
}

编程实现107653秒是几天几小时几分钟几秒:

func main0603() {
	//fmt.Printf("%d周%d天\n",46/7,46%7)
	//编程实现107653秒是几天几小时几分钟几秒?
	//miao:=107653
	//fenzhong:=miao/60
	//xiaoshi:=fenzhong/60
	//tian:=xiaoshi/24
	//time:=107653
	//fmt.Println("天:",time/60/60/24%365)
	//fmt.Println("时:",time/60/60%24)
	//fmt.Println("分:",time/60%60)
	//fmt.Println("秒:",time%60)

}

7.赋值运算符

func main0701() {
	a:=10
	//a=a+5
	//a += 5
	//a-=5
	//a*=5
	//a/=5
	//a%=5 a=a%5

	//a += 5*3//a=a+5*3
	//a+=5*a  //a=a+5*a a++
	b:=a+5*a
	fmt.Println(a)
	fmt.Println(b)
}

8.比较运算符

func main08() {
	//关系运算符用于程序中的逻辑判断  返回值为布尔类型
	a := 10
	//b := 20
	//==相等于 相同于
	//fmt.Println(a==b)
	//fmt.Println(a<b)
	//>=  大运等于运算符 <= 小于等于运算符
	//fmt.Println(a<=b)
	//不等于 !=
	fmt.Println(a)
}

9.逻辑运算符

func main0901() {
	//逻辑非 ! 非真为假 非假为真
	//只能对bool类型变量或者bool类型表达式使用逻辑非运算符
	var a bool =false
	a=true
	b:=20
	c:=20
	fmt.Println(!(b==c))
	//fmt.Println(!b)//err
	fmt.Println(!a)
}
func main0902()  {
	//逻辑与 &&  表达式1 && 表达式2 同真为真 其余为假
	a:=10
	b:=20
	c:=30
	d:=20
	fmt.Println(a>b && c<d)

}
func main0903(){
	//逻辑或 || 表达式1 || 表达式2 同假为假 其余为真
	a:=10
	b:=20
	c:=30
	d:=20
	fmt.Println(a<b || c>d)

}
func main0904(){
	//去地址运算符
	//var a int =10
	//fmt.Println(&a)
	a:=10
	//指针变量
	p:=&a
	//* 取值运算符
	fmt.Println(*p)
}

10.运算符优先级

//括号 () 结构体成员.  数组下标[]

//单目运算符
//逻辑非! 取地址& 取值* 自增++ 自减--

//双目运算符
//乘除 * / %
//加减 + -     
//关系 == != > >= < <=
//逻辑 || &&
//赋值 = += -= *= /= %=

11.条件语句

func main1101(){
	var score int
	fmt.Scan(&score)

	//if 条件判断根据是否满足条件指向对应的代码
	//else 作为if 补充条件 如果条件不满足执行else代码
	//格式 if 表达式{
	// 代码体
	// }else {
	// 代码体
	//}

	if score >700 {
		fmt.Println("我要上清华")
	} else{
		fmt.Println("我要上蓝翔")
	}

}

注意:{必须紧跟在if判断后

func main1102(){
	var score int
	fmt.Println("请输入分数")
	fmt.Scan(&score)
	//if else if
	//else 配对和if 一起使用  选择同级别下的if进行配对使用
	if score>700{
		fmt.Println("我要上清华")
		if score >720{
			fmt.Println("我要学习挖掘机")
		}else if score >710{
			fmt.Println("我要学习美容美发")
		}else {
			fmt.Println("我要学习计算机")
		}

	} else if score >680{
		fmt.Println("我要上北大")
		if score > 690{
			fmt.Println("我要学习盗墓")
		}else if score >685{
			fmt.Println("我要学习占卜")
		}else{
			fmt.Println("我要学习计算机")
		}

	} else if score >650{
		fmt.Println("我爱你")
	}else{
		fmt.Println("我不爱你")
	}
}
func main1103(){
	a:=10
	if a>5{
		fmt.Println(a)
	}
	//采用就近原则 找到上面尚未配对的if进行匹配操作
	if a>8{
		fmt.Println(a)
	}else {
		fmt.Println("haha")
	}
}

12.switch分支语句

func main1201() {

	var w int
	fmt.Scan(&w)
	//swich中的只不能是浮点型数据 浮点型数据是一个约等于的数据
	//switch 选择想可以是一个整型变量
	switch w {
	case 1:
		fmt.Println("星期一")
	case 2:
		fmt.Println("星期二")
	case 3:
		fmt.Println("星期三")
	case 4:
		fmt.Println("星期四")
	case 5:
		fmt.Println("星期五")
	case 6:
		fmt.Println("星期六")
	case 7:
		fmt.Println("星期日")
	//如果输入的值没有找到 默认进入default 中
	default:
		fmt.Println("输入错误")
	}

	//switch score>700 {
	//case true:
	//	fmt.Println(score)
	//case false:
	//	fmt.Println(score)
	//}
}
func main1202() {
	var score int
	fmt.Println("请输入分数")
	fmt.Scan(&score)

	switch score / 10 {
	case 10:
		//fmt.Println("A")
		fallthrough //让switch执行下一个分支的代码  如果不写 执行到下一个分支就会自动停止
	case 9:
		fmt.Println("A")
	case 8:
		fmt.Println("B")
	case 7:
		fmt.Println("C")
	case 6:
		fmt.Println("D")
	default:
		fmt.Println("E")
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值