😉P03 Go 基础知识😉

Posted nagase

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了😉P03 Go 基础知识😉相关的知识,希望对你有一定的参考价值。

1 概要

  • switch case语句
  • for循环语句
  • goto语句
  • 字符串的格式化
  • 运算符

2 switch case语句

package main

func main() {
	/*switch 1 + 1 {
	case 1:
		fmt.Println("equal one")
	case 2:
		fmt.Printf("equal two")
	case 3:
		fmt.Println("equal three")
	default:
		fmt.Println("都不满足")
	}*/

	// 变量

	/*var age int
	fmt.Scanln(&age)

	switch age {
	case 1:
		fmt.Println("equal one")
	case 2:
		fmt.Printf("equal two")
	case 3:
		fmt.Println("equal three")
	default:
		fmt.Println("都不满足")
	}*/

	// 注意事项:数据类型一致的情况
}

3 for循环

3.1 死循环

for {
    ...
}

3.2 布尔值

for 1 > 2 {
    ...
}

flag := true
for flag {
    ...
}

示例

package main

import (
	"fmt"
	"time"
)

func main() {
	// 示例1:死循环
	/*fmt.Println("开始循环")
	for {
		fmt.Println("红鲤鱼与绿鲤鱼与驴")
		time.Sleep(time.Second * 1) // 等一秒再继续执行
	}
	fmt.Println("结束循环")*/

	// 示例2:
	/*fmt.Println("开始循环")
	for 2 > 1 {
		fmt.Println("红鲤鱼与绿鲤鱼与驴")
		time.Sleep(time.Second * 1) // 等一秒再继续执行
	}
	fmt.Println("结束循环")*/

	// 示例3:
	/*fmt.Println("开始循环")
	number := 1
	for number < 5 {
		fmt.Println("红鲤鱼与绿鲤鱼与驴")
		number = 10
		time.Sleep(time.Second * 1) // 等一秒再继续执行
	}
	fmt.Println("结束循环")*/

	// 示例4:
	/*fmt.Println("开始循环")
	number := 1
	for number < 5 {
		fmt.Println("红鲤鱼与绿鲤鱼与驴")
		number = number + 1
		time.Sleep(time.Second * 1) // 等一秒再继续执行
	}
	fmt.Println("结束循环")*/
	
	// 示例5:
	fmt.Println("开始循环")
	flag := true
	for flag {
		fmt.Println("红鲤鱼与绿鲤鱼与驴")
		flag = false
		time.Sleep(time.Second * 1) // 等一秒再继续执行
	}
	fmt.Println("结束循环")
}

3.3 变量和条件

for i := 1; i < 10 {
    fmt.Println("XXX")
    i = i + 1
}

3.4 变量&条件&变量赋值

for i := 1; i < 10; i = i + 1 {
    fmt.Println("XXX")
}

3.5 扩展

// 对于i = i + 1 的简写:i++
// 对于i = i - 1 的简写:i--

3.6 continue 关键字

在for循环中使用,当循环遇到continue关键字时,会停止当前的循环继续执行下一次循环。

for {
    fmt.Println("samuel")
    continue
    fmt.Println("nagase")
}

3.7 break 关键字

在for循环中,循环中一旦遇到break,就会立刻跳出循环

for {
    fmt.Println("xxxxx")
    break
    fmt.Println("samuel")
}

4 goto语句(C、Go)

goto语句在C和Go中存在,Java、Python没有这样的语法。

该语法用于跳转到指定的行,然后向下执行代码

package main

import "fmt"

func main() {
	var userName string
	fmt.Printf("请输入您的用户名:")
	fmt.Scanln(&userName)

	if userName == "samuel" {
		// svip
		goto SVIP
	} else if userName == "nagase" {
		// vip
		goto VIP
	}

	fmt.Println("预约······")

	VIP:
	fmt.Println("等号······")

	SVIP:
	fmt.Println("进入······")
}

5 字符串的格式化

将数据格式化成为特定格式的字符串时,可以使用字符串格式化。

fmt.Printf("My name is %s , I am going to %s in this %s !", userName, userBehavior, userLocation)

6 运算符

6.1 算数运算符

+、-、*、/、%、++、--

6.2 关系运算符

==、!=、>、<、>=、<=

6.3 逻辑运算符

&&、||、!

if !true {
    fmt.Println("xxx")
}

6.4 位运算符

&、|、^、<<、>>

计算机中的存储、运算、网络传输等任何行为,本质上都是二进制的操作,例如:01010101。

十进制和二进制的转换关系

十进制 二进制
0 0
1 1
2 10
3 11
4 100
5 101
6 110
7 111
8 1000
9 1001
10 1010
... ...

二进制转换为十进制

10101  ->   2 ** 4 + 2 ** 2 + 2 ** 0 = 16 + 4 + 1 = 21

十进制转换为二进制

99   ->     64 + 32 + 2 + 1 => 2 ** 6 + 2 ** 5 + 2 ** 1 + 2 ** 0 = 1100011

位运算指的是二进制之间的运算

# 1、按位进行与运算(只有两个全是1才是1)
r1 := 5 & 99
5   -> 0000101
99 -> 1100011
         0000001 -> 1

# 2、按位进行或运算(只要有一个1就是1)
r2 := 5 | 99
5   -> 0000101
99 -> 1100011
         1100111 -> 2 ** 6 + 2 ** 5 + 2 ** 2 + 2 ** 1 + 2 ** 0 = 103

# 3、按位进行异或运算(只要上下不同就是1)
r3 := 5 ^ 99
5   -> 0000101
99 -> 1100011
         1100110 -> 64 + 32 + 4 + 2 = 102

# 4、按位向左移动(右边补0)
r4 := 5 << 2
5 -> 101
向左移动两位 -> 10100 -> 16 + 4 = 20
         
# 5、按位向右移动(右边切割)
r5 := 5 >> 2
5 -> 101
向右移动两位 -> 1 -> 1

# 6、比较清除(以第一个值为参考系,让前面的和后面的值的二进制进行比较,如果两个位置都是1,则将前面的那个1位置置为0)
r6 := 5 ^ 99
5   -> 0000101
99 -> 1100011
         0000100 -> 4

6.5 赋值运算符

=、+=、-=、*=、/=、%=、<<=、>>=、&=、|=、^=

6.6 运算符的优先级

5 ----- *、/、%、<<、>>、&、&^

4 ----- +、-、|、^

3 ----- ==、!=、<、<=、>、>=

2 ----- &&

1 ----- ||

注意:不要想办法去记住他,使用括号

叮嘱:不要太过于用心去背、记,只要认识即可

  

 

以上是关于😉P03 Go 基础知识😉的主要内容,如果未能解决你的问题,请参考以下文章

Go基础——类型

go基础-变量

Go基础数据类型

go语法知识--内置类型

go语法知识--内置类型

go语言基础之不要操作没有合法指向的内存