首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

go语言学习历程(7)

附带知识点讲解:

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:

结束本轮循环,进行下一轮循环,相当于在众多循环中跳过某次循环。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20201121A00E1B00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券