Golang------基础内容
一、条件语句
1.1 格式
if 条件 {
成立,则执行此行代码
} else {
不成立,则执行此行代码
}
if 条件 {
成立,则执行此行代码
}
1.1.1 例
package main
import "fmt"
func main() {
if 1 < 2 { //if后面可以跟条件(不等式等)、变量、布尔
fmt.Println("666")
} else {
fmt.Println("999")
}
if 1 > 2 {
fmt.Println("666")
} else {
fmt.Println("999")
}
}
---------------------------------------------------------------------------------------------
666
999
练习题1:用户输入姓名,判断是否正确
package main
import "fmt"
func main() {
var name string
fmt.Print("请输入姓名: ")
fmt.ScanLn(&name)
if name == "alex" { //多条件判断使用:&&(且)、||(或)
fmt . PrintLn("用户名输入正确")
} eLse {
fmt . PrintLn("用户名输入错误")
}
}
//多条件判断使用:&&(且)、||(或)
1.2 多重判断
if 条件A {
...
} else if 条件B {
...
} else if 条件C {
...
} else if ... {
...
}
package main
import "fmt"
func main() {
var score int
fmt.Print("请输入你的分数:")
fmt.Scanln(&score)
if score >= 90 {
fmt.Println("优秀")
}else if score < 90 && score >= 80 {
fmt.Println("良好")
} else {
fmt.Println("差劲")
}
}
---------------------------------------------------------------------------------------------
请输入你的分数:95
优秀
请输入你的分数:83
良好
请输入你的分数:56
差劲
1.3 嵌套
package main
import "fmt"
func main() {
fmt.Println("欢迎致电18086, 1.话费相关; 2.业务办理; 3.人工服务。")
var number int
fmt.ScanLn(&number)
if number == 1 {
fmt.Println("话费服务,1.交话费; 2.查询。")
var n1 int
fmt.ScanLn(&n1)
if n1==1 { //在if条件语句中再嵌套一个if条件语句
fmt.Println("请输入缴纳花费金额:")
} else if n1==2 {
fmt.PrintLn("正在查询,请稍等")
} else {
fmt. Println("输入错误")
}
} eLse if number == 2 {
...
} eLse if number == 3 {
...
} eLse {
fmt. Println("输入错误)
}
二、Switch
package main
import "fmt"
func main() {
var age int
fmt.Println("请输入年龄:")
fmt.Scan(&age)
switch age {
case 17:
fmt.Println("等于1")
case 18:
fmt.Println("等于2")
case 19:
fmt.Println("等于3")
default:
fmt.Println("都不满足")
}
}
----------------------------------------------------------------------------------------
请输入年龄:
18
等于2
三、for循环
time.Sleep(time.Second * 1) //输出停顿一秒
package main
import "fmt"
func main() {
fmt.Println("开始")
number := 1
for number < 5 {
fmt.Println("hhhhhhhhh")
number = number + 1
}
fmt.Println("4")
}
----------------------------------------------------------------------------------------
开始
hhhhhhhhh
hhhhhhhhh
hhhhhhhhh
hhhhhhhhh
4
package main
import "fmt"
func main() {
fmt.Println("开始")
for i:=1;i<5; { //变量&条件
fmt.Println("hhhhhhhhh")
i = i + 1
}
fmt.Println("4")
}
----------------------------------------------------------------------------------------
开始
hhhhhhhhh
hhhhhhhhh
hhhhhhhhh
hhhhhhhhh
4
package main
import "fmt"
func main() {
fmt.Println("开始")
for i:=1;i<5;i=i+1{ //i++//变量&条件&变量赋值
fmt.Println("hhhhhhhhh")
}
fmt.Println("4")
}
----------------------------------------------------------------------------------------
开始
hhhhhhhhh
hhhhhhhhh
hhhhhhhhh
hhhhhhhhh
4
3.1 continue
continue:在for循环中使用,当遇到continue时,会停止当前循环,开始下一次循环
package main
import (
"fmt"
"time"
)
func main() {
for {
fmt.Println("八百标兵奔北坡")
continue //使用continue,则后面的不再执行,然后进入下一个循环
fmt.Println("炮兵并排北边跑") //不执行
time.Sleep(time.Second * 1) //不执行
}
}
---------------------------------------------------------------------------------
八百标兵奔北坡
八百标兵奔北坡
八百标兵奔北坡
八百标兵奔北坡
八百标兵奔北坡
八百标兵奔北坡
...死循环
#使用循环输出1 2 3 4 5 6 8 9 (1-9中7以外的整数)
package main
import "fmt"
func main() {
for i:=1;i<10;i++{
if i==7 {
continue #在i为7时跳出循环,不输出7
}
fmt.Println(i)
}
}
---------------------------------------------------------------------------------
1
2
3
4
5
6
8
9
3.2 break
break:在for循环中使用,遇到break时会跳出循环
package main
import (
"fmt"
"time"
)
func main() {
for {
fmt.Println("八百标兵奔北坡")
break //直接跳出循环,此次循环下面的内容不再执行,之后的循环也不再执行
fmt.Println("炮兵并排北边跑")
time.Sleep(time.Second * 1)
}
}
---------------------------------------------------------------------------------
八百标兵奔北坡
3.3 打标签
package main
import "fmt"
func main() {
for i:=1;i<3;i++ {
for j:=1;j<5;j++ {
if j==3 {
continue
}
fmt.Println(i,j)
}
}
}
---------------------------------------------------------------------------------
1 1
1 2
1 4
2 1
2 2
2 4
=================================================================================
package main
import "fmt"
func main() {
f1:for i:=1;i<3;i++ { //给这个for循环打上f1的标签
for j:=1;j<5;j++ {
if j==3 {
continue f1 //中止fi当前循环,进入下一个循环
}
fmt.Println(i,j)
}
}
}
---------------------------------------------------------------------------------
1 1
1 2
2 1
2 2
package main
import "fmt"
func main() {
for i:=1;i<3;i++ {
for j:=1;j<5;j++ {
if j==3 {
break
}
fmt.Println(i,j)
}
}
---------------------------------------------------------------------------------
1 1
1 2
2 1
2 2
=================================================================================
package main
import "fmt"
func main() {
f1:for i:=1;i<3;i++ {
for j:=1;j<5;j++ {
if j==3 {
break f1 //直接跳出标签f1的循环,后面的也不再循环
}
fmt.Println(i,j)
}
}
}
---------------------------------------------------------------------------------
1 1
1 2
四、goto
跳跃到指定的行,然后向下执行代码
package main
import "fmt"
func main() {
var name string
fmt.Print("请输入姓名:")
fmt.Scanln(&name)
if name == "x" {
goto SVIP
} else if name == "y" {
goto VIP
}
fmt.Println("需要预约")
VIP:
fmt.Println("需要等桌")
SVIP:
fmt.Println("进入包厢")
}
---------------------------------------------------------------------------------
请输入姓名:x
进入包厢
---------------------------------------------------------------------------------
请输入姓名:y
需要预约
需要等桌
---------------------------------------------------------------------------------
请输入姓名:a
需要预约
需要等桌
进入包厢
五、字符串格式化
将数据格式化成为特定格式的字符串时,可以使用字符串格式化。
package main
import "fmt"
func main() {
var name string
var age,score int
fmt.Println("请输入姓名:")
fmt.Scanln(&name)
fmt.Println("请输入年龄:")
fmt.Scanln(&age)
fmt.Println("请输入分数:")
fmt.Scanln(&score)
result:=fmt.Sprintf("我叫%s,我今年%d岁,我考了%d分",name,age,score )
fmt.Println(result )
}
---------------------------------------------------------------------------------
请输入姓名:
xyw
请输入年龄:
20
请输入分数:
98
我叫xyw,我今年20岁,我考了98分
六、运算符
6.1 算术运算符
运算符 | 描述 | 实例 |
---|---|---|
+ | 相加 | A+B输出结果 |
- | 相减 | A-B输出结果 |
* | 相乘 | A*B输出结果 |
/ | 相除 | B/A输出结果 |
% | 取余 | B%A输出结果 |
++ | 自增 | A++输出结果 |
– | 自减 | A–输出结果 |
6.2 关系运算符
运算符 | 描述 |
---|---|
== | A等于B |
!= | A不等于B |
> | A大于B |
< | A小于B |
>= | A大于等于B |
<= | A小于等于B |
6.3 逻辑运算符
运算符 | 描述 |
---|---|
&& | and |
|| | OR |
! | 取反NOT |
6.4 位运算符
按位运算指的是二进制之间的运算
运算符 | 描述 | 实例 |
---|---|---|
& | 按位与运算,位置都为1,才得1,不同得0 | 5&99=1 |
|| | 按位或预算,位置只要有1就得1 | 5|99=103 |
^ | 按位异或运算,只要位置不同时得1 | 5^99=102 |
<< | 按位向左移动,右例为向左移动两位 | 5<<2=20 |
>> | 按位向右移动,右例为向左移动一位 | 5>>1=2 |
&^ | 比较清除,以前面的值为基准答案,让前面的和后面的值的二进制位进行比较,都为1的时候将位置上的1改为0 |
5 --> 0000101
99 --> 1100011
与: 0000001
5 --> 0000101
99 --> 1100011
或: 1100111
5 ---> 0000101
99 ---> 1100011
异或: 1100110
5 << 2
5 ------> 101
向左移动两位 10100 ------>20
5 >> 1
5 ------> 101
向右移动一位 10 ------>2 //最右边的那位会消除掉
5 ------> 0000101
99 ------> 1100011 //只有最后一位都为1
比较清除: 0000100 //将5的二进制基准上将最后一位改为0
6.5 赋值运算符
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符,将一个表达式的值赋给一个左值 | C=A+B将A+B表达式结果赋值给C |
+= | 相加后再赋值 | C+=A等于C=C+A |
-= | 相减后再赋值 | C-=A等于C=C-A |
*= | 相乘后再赋值 | C*=A等于C=C*A |
/= | 相除后再赋值 | C/=A等于C=C/A |
%= | 求余后再赋值 | C%=A等于C=C%A |
<<= | 左移后赋值 | C<<=2等天C=C<<2 |
>>= | 右移后赋值 | C>>=2等于C=C>>2 |
&= | 按位与后赋值 | C&=2等于C=C&2 |
^= | 按位异或后赋值 | C^=2等于C=C^2 |
|= | 按位或后赋值 | C|=2等于C=C|2 |
6.6 运算符的优先级
Precedence | Operator |
---|---|
5 | * , / , % , << , >> , & , &^ |
4 | + , - , | , ^ |
3 | == , != , < , <= , > , >= |
2 | && |
1 | || |