附带知识点讲解:
funcmain(){
varnumint=10
varnum1int64=20
//num1 = num +num //cannot run non-main package
num1=int64(num+num)
fmt.Println(num1)
}
打印结果:
cannotrunnon-mainpackage
20
int和int64不是一个类型
funcmain() {
varnum1int
varnum2int8
varnum3int16
varnum4int32
varnum5int64
fmt.Println(unsafe.Sizeof(num1))
fmt.Println(unsafe.Sizeof(num2))
fmt.Println(unsafe.Sizeof(num3))
fmt.Println(unsafe.Sizeof(num4))
fmt.Println(unsafe.Sizeof(num5))
}
//打印的是变量的字节数
打印结果:
8
1
2
4
8
在上面的案例中不难发现int和int64是不一样的类型,int在64位系统中就是int64占位8,但是在32位系统中就是int32,也就是4个字节,取决于cpu是32位的还是64位的。
案例:
提示用户输入用户名和密码,用户名“admin”密码就是“88888888”,验证账号和密码。
funcmain() {
/* 提示用户输入用户名和密码,用户名“admin”密码就是“88888888”,验证账号和密码。*/
//给用户2个输入口
varIDstring
varPWstring
fmt.Println("请用户输入用户名:")
fmt.Scan(&ID)
fmt.Println("请用户输入密码:")
fmt.Scan(&PW)
//条件判断
ifID=="admin"&&PW=="88888888"{
fmt.Println("验证通过")
}elseifID=="admin"&&PW!="88888888"{
fmt.Println("账号或者密码错误")
}elseifID!="admin"&&PW=="88888888"{
fmt.Println("账号或者密码错误")
}elseifID!="admin"&&PW!="88888888"{
fmt.Println("账号或者密码错误")
//这样写的意义是防止别人试账号密码
}
}
打印结果:
请用户输入用户名:
admin
请用户输入密码:
88888888
验证通过
6.2switch 结构
switch基本语法
switch变量或表达式{
要执行的代码
case值1:
要执行的代码
case值2:
要执行的代码
case值3:
要执行的代码
......
default:
要执行的代码
}
案例:
考试成绩大于等于90输出A,大于等于80输出B,大于等于70输出C,大于等于60输出D,不及格输出E
funcmain() {
varscorefloat64
fmt.Println("请输入考试成绩:")
fmt.Scan(&score)
switch{
casescore>=90:
fmt.Println("A")
casescore>=80:
fmt.Println("B")
casescore>=70:
fmt.Println("C")
casescore>=60:
fmt.Println("D")
default:
fmt.Println("E")
}
}
打印结果:
请输入考试成绩:
100
A
案例:
空条承太郎年终工作判定,
A涨500 B涨200 C不变 D降200 E降500
设定工资5000 请用户输入评级,来显示空调成太郎的工资。
/* 空条承太郎年终工作判定,
A涨500 B涨200 C不变 D降200 E降500
设定工资5000 请用户输入评级,来显示空调成太郎的工资 */
//给用户一个评级口,生成一个变量工资5000
//很多知识点很听懂了,就是没多巩固,敲一遍过,这是不行,要多复习几遍,经过上次做博客的洗礼之后,就是因为我觉得简单,很好写,很多知识点发现没有总结透彻,现在我一点觉得简单的想法都没有了,每道题我全部都写进去,每个细节,之前没有注意到的地方,全部总结写进去。
varlevelstring
varsalaryint=5000
fmt.Println("请输入评级信息:")
fmt.Scan(&level)
switchlevel{
case"A":
salary+=500
case"B":
salary+=200
case"C":
case"D":
salary-=200
case"E":
salary-=500
}
fmt.Println("空条承太郎的工资为:",salary)
打印结果:
请输入评级信息:
C
空条承太郎的工资为:4800
请输入评级信息:
D
空条承太郎的工资为:4800
请输入评级信息:
E
空条承太郎的工资为:4500
案例:
闰年的判定(符合下面两个条件之一)
1.年份能够被400整除(2000)
2.年份能够被4整除但不能被100整除(2008)
funcmain() {
/* 闰年的判定(符合下面两个条件之一)
1.年份能够被400整除(2000)
2.年份能够被4整除但不能被100整除(2008) */
varyearint
fmt.Println("请用户输入年份")
fmt.Scanf("%d",&year)
switchyear%400==||year%4==&&year&100!={
casetrue:
fmt.Println("是闰年")
casefalse:
fmt.Println("不是闰年")
default:
fmt.Println("输入错误,请重新输入")
}
//重要的一点如何判定,用户输入的是整型呢?就算我声明的是int变量,Scanf("%d",&year)他的意思是把用户输入的内容转化成十进制的数,所以我输入英文也被弄成了数字了,然后还被判定为了闰年,这个问题我先保留着。
打印结果:
2000
是闰年
1200
是闰年
2100
是闰年
2122
不是闰年
sdasd
是闰年
请用户输入年份
poi
是闰年
请用户输入年份
poi
是闰年
请用户输入年份
12oo
是闰年
7.循环结构
重复做一件事情,作用就是套娃,反复干,命令有开始停止。
7.1for循环基本结构
语法结构:
for 初始化变量;判断条件;修正变量{
要执行的代码(循环体)
}
funcmain() {
varnamestring
fmt.Println("你叫什么名字?")
fmt.Scan(&name)
fmt.Println("什么?大点声!")
forp:=1;p
fmt.Println("听不见!!!")
}
fmt.Println("在这所学校,我们四年级学员说听不见,就是听不见!大点声!!!!")
forpp:=1;pp
fmt.Println(" (▔皿▔)凸 ")
fmt.Printf("超大声:我叫%v!!!!!!!!!!\n",name)
}
fmt.Println("很好!很有精神!")
fmt.Println("(๑꒪◞౪◟꒪๑) ")
}
打印结果:
你叫什么名字?
空调承太郎
什么?大点声!
听不见!!!
听不见!!!
听不见!!!
在这所学校,我们四年级学员说听不见,就是听不见!大点声!!!!
(▔皿▔)凸
超大声:我叫空调承太郎!!!!!!!!!!
(▔皿▔)凸
超大声:我叫空调承太郎!!!!!!!!!!
(▔皿▔)凸
超大声:我叫空调承太郎!!!!!!!!!!
很好!很有精神!
(๑꒪◞౪◟꒪๑)
7.1.1break语句的运用
break:结束当前循环
案例:
结合前面的输入用户名和密码功能
funcmian() {
varIDstring
varPWstring
for{
fmt.Println("请用户输入用户名:")
fmt.Scan(&ID)
fmt.Println("请用户输入密码:")
fmt.Scan(&PW)
//条件判断
ifID=="admin"&&PW=="88888888"{
fmt.Println("验证通过")
break
}elseifID=="admin"&&PW!="88888888"{
fmt.Println("账号或者密码错误")
}elseifID!="admin"&&PW=="88888888"{
fmt.Println("账号或者密码错误")
}elseifID!="admin"&&PW!="88888888"{
fmt.Println("账号或者密码错误")
//这样写的意义是防止别人试账号密码
}
}
}
打印结果:
请用户输入用户名:
admin
请用户输入密码:
999
账号或者密码错误
请用户输入用户名:
999]
请用户输入密码:
999as
账号或者密码错误
请用户输入用户名:
999d
请用户输入密码:
999ada
账号或者密码错误
请用户输入用户名:
999s
请用户输入密码:
9999aca
账号或者密码错误
请用户输入用户名:
asd9c9a9d9
请用户输入密码:
999d99asdc
账号或者密码错误
请用户输入用户名:
o7897879
请用户输入密码:
88asda
账号或者密码错误
请用户输入用户名:
9898asd
请用户输入密码:
89a9sdas
账号或者密码错误
请用户输入用户名:
admin
请用户输入密码:
88888888
验证通过
思考:
正常输错密码或者账号就显示“账号或者密码错误”是为了防止别人拿到了多个账号密码推断盗号。不停的试账号密码还是被人试出来,这个时候输入次数的功能就能解决这个问题。
funcmain() {
varIDstring
varPWstring
variint
for{
i++
ifi==3{
fmt.Println("今日输错次数已达上限")
break
}
fmt.Println("请用户输入用户名:")
fmt.Scan(&ID)
fmt.Println("请用户输入密码:")
fmt.Scan(&PW)
//条件判断
ifID=="admin"&&PW=="88888888"{
fmt.Println("验证通过")
break
}elseifID=="admin"&&PW!="88888888"{
fmt.Println("账号或者密码错误")
}elseifID!="admin"&&PW=="88888888"{
fmt.Println("账号或者密码错误")
}elseifID!="admin"&&PW!="88888888"{
fmt.Println("账号或者密码错误")
//这样写的意义是防止别人试账号密码
}
}
}
打印结果:
请用户输入用户名:
admin
请用户输入密码:
asdasasd
账号或者密码错误
请用户输入用户名:
asdasd
请用户输入密码:
asd
账号或者密码错误
今日输错次数已达上限
7.1.2continue语句
continue:
结束本轮循环,进行下一轮循环,相当于在众多循环中跳过某次循环。
领取专属 10元无门槛券
私享最新 技术干货