go(三)
前四篇go基础笔记大部分cv–只因–的,主要本人是懒得写了,后面会继续更新go的基础及其框架,预计今年年底更完吧(感谢狂神_)
一、逻辑运算符
var a bool = true
var b bool = false
//与,都为真结果才为真,否则为假
if a && b {
fmt.Println("都为真")
} else {
fmt.Println("只有一个为真")
}
//或,都为假才假
if a || b {
fmt.Println("至少有一个为真")
} else {
fmt.Println("都为假")
}
//取反
if !(a && b) {
fmt.Println("取反后为TRUE")
} else {
fmt.Println("取反后为FALSE")
}
二、位运算符
//二进制 0 1 逢二进一
//位运算: 二进制上的0 FALSE 1 TRUE
//60 0011 1100
//13 0000 1101
// ------------
// & 0000 1100
// | 0011 1101
// ^ 0011 0001 不同为1 相同为0
// >> 右移
// << 左移
var a uint = 60
var b uint = 13
var c uint = 0
c = a & b
fmt.Printf("%d,二进制%b\n", c, c)
c = a | b
fmt.Printf("%d,二进制%b\n", c, c)
c = a ^ b
fmt.Printf("%d,二进制%b\n", c, c)
c = a << 2
fmt.Printf("%d,二进制%b\n", c, c)
c = b >> 2
fmt.Printf("%d,二进制%b", c, c)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L6fPFuNl-1685528205814)(C:\Users\change\AppData\Roaming\Typora\typora-user-images\image-20230531175234323.png)]
三、赋值运算符
var a int = 119
var b int = 361
//赋值
b = a
fmt.Println(b)
b += a
fmt.Println(b)
b -= a
fmt.Println(b)
b *= a
fmt.Println(b)
b /= a
fmt.Println(b)
b %= a
fmt.Println(b)
b >>= a
fmt.Println(b)
b <<= a
fmt.Println(b)
b &= a
fmt.Println(b)
b |= a
fmt.Println(b)
b ^= a
fmt.Println(b)
四、其他运算符
var a int = 4
var str *int
ptr = &a
fmt.Printf("a的值为%d\n", a) //4
fmt.Printf("ptr的值为%p\n", str) //0xc0000a6058
fmt.Printf("ptr为%d\n", *str) //4
五、拓展之获取键盘输入
var x int
var y int
//定义了两个变量 想用键盘来录入这两个变量
//输出
//fmt.Println() 打印并换行
//fmt.Printf() 格式化输出
//fmt.Print() 打印输出
/**
输入:
fmt.Scanf()
fmt.Scanfln()
fmt.Scan()
*/
fmt.Println("请输入两个数:")
//变量取地址 &变量
//Scanln 阻塞等待你的键盘输入
fmt.Scanln(&x, &y)
fmt.Println(x, y)
六、编码规范
自己去查,现在不规范,以后就掉坑
七、程序的流程控制
if 语句
var score int = 99
if score >= 90 && score <= 100 {
fmt.Println("A")
} else if score >= 80 && score < 90 {
fmt.Println("B")
} else if score >= 70 && score < 80 {
fmt.Println("C")
} else if score >= 60 && score < 70 {
fmt.Println("D")
} else {
fmt.Println("不及格")
}
if多重嵌套
var a,b int
var pwd int = 665566
fmt.Println("请输入用户的密码")
fmt.Scan(&a)
//业务:验证密码是否正确
if(a == pwd){
fmt.Print("请再次输入密码:")
fmt.Scan(&b)
if(b == pwd){
fmt.Println("登录成功")
}else{
fmt.Println("登录失败,第二次密码输入错误")
}
}else {
fmt.Println("登录失败,密码错误")
}
switch语句
var score int = 90
//匹配 case
switch score {
case 90:
fmt.Println("A")
case 80:
fmt.Println("B")
case 50, 60, 70:
fmt.Println("C")
default:
fmt.Println("D")
}
//switch默认的条件 bool = true
switch {
case false:
fmt.Println("false")
case true:
fmt.Println("true")
default:
fmt.Println("-_-")
}
fallthrough
var score int = 90
switch score {
case 90:
fmt.Println("A")
fallthrough
case 80:
if score == 90 {
break
}
}
八、for循环
在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句
for循环是一个循环控制结构,可移植性指定次数的循环
for i := 1; i < 10; i++ {
fmt.Println(i)
}
//计算1-10的数字之和
var sum int = 0
for i := 1; i <= 10; i++ {
sum += i
}
fmt.Println(sum)
//省去条件
i := 1
for i < 10 {
fmt.Println(i)
i++
}
//无限循环
i := 1
for {
fmt.Println(i)
i++
}
小练习
/**
打印一个方阵
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
*/
func main() {
for i := 1; i <= 5; i++ {
for j := 1; j <= 5; j++ {
fmt.Print("* ")
}
fmt.Println()
}
//打印九九乘法表
for i := 1; i <= 9; i++ {
for j := 1; j <= i; j++ {
fmt.Printf("%d*%d=%d\t", i, j, i*j)
}
fmt.Println()
}
九、break与continue
break 结束当前整个循环 continue结束当次循环
for i := 1; i < 10; i++ {
if i == 5 {
break
}
fmt.Println(i)
}
fmt.Println("=============================")
for j := 1; j < 10; j++ {
if j == 5 {
continue
}
fmt.Println(j)
}
十、遍历String
// acsii编码
str := "Hello,world!"
fmt.Print(str)
//获取字符串的长度
fmt.Println("字符串的长度为:", len(str))
//获取指定的字节
fmt.Print("字节打印:", str[2])
fmt.Printf("%c", str[2])
//for
for i := 0; i < len(str); i++ {
fmt.Printf("%c ", str[i])
}
// for range循环 遍历数组、切片....
// 返回下标和对应的值
for i, v := range str {
fmt.Print(i)
fmt.Printf(" ")
fmt.Printf("%c", v)
}
//String 不能改变
//str[2] = 'A'
//fmt.Println(str[2])