Go:常量&运算符&流程控制
目录
一、常量
1.1 常量基本定义
1.2 常量组的定义
1.3 常量枚举
二、运算符
2.1 算数运算符
2.2 关系运算符
2.3 逻辑运算符
2.4 位运算符
2.5 赋值运算符
2.6 指针运算符
2.7 运算符优先级
三、流程控制
3.1 if-else 条件语句
3.2 switch-case语句
3.3 for 循环
3.3 break & continue
break
continue
break & continue 的区别
3.4 goto跳转
四、练习
4.1 九九乘法表
4.2 数字金字塔
4.3 斐波那契数列
在学习编程的过程中,掌握常量、运算符和流程控制是理解和使用任何编程语言的基础。对于Go语言,这些概念同样至关重要。通过本笔记,我们将详细介绍Go语言中的常量、运算符以及流程控制的相关知识,帮助读者在实际编程中灵活运用这些基本概念。
一、常量
1.1 常量基本定义
常量是在程序编译时就确定下来的固定值。它们可以是数值、布尔值或字符串。Go语言的常量具有以下特点:
- 使用 const 关键字声明
- 在编译时被创建
- 只能是基本数据类型(数值、字符串或布尔值)
- 不可在运行时修改
注意:
- 一个常量被声明后可以不使用,但是变量一旦声明则必须使用。
- 显式定义:常量的声明以关键字const开头,后接变量类型并进行赋值,行尾没有其他标点符号。const 常量名 常量类型 = value
- 隐式定义:由于Go是编译型语言,定义常量时可以省略常量类型,因为编译器可以根据变量的值来推断其类型。const 常量名 = value
package main import "fmt" // 单个常量声明 const PI = 3.14159 // 多个常量声明 const ( StatusOK = 200 StatusNotFound = 404 StatusServerError = 500 ) func main() { fmt.Println("PI:", PI) // 常量的数学运算 fmt.Println("圆的面积 (半径为5):", PI*5*5) // 尝试修改常量会导致编译错误 fmt.Println("HTTP状态码 - OK:", StatusOK) fmt.Println("HTTP状态码 - Not Found:", StatusNotFound) fmt.Println("HTTP状态码 - Server Error:", StatusServerError) } //result PI: 3.14159 圆的面积 (半径为5): 78.53975 HTTP状态码 - OK: 200 HTTP状态码 - Not Found: 404 HTTP状态码 - Server Error: 500
1.2 常量组的定义
如果程序需要用到大量值相同的常量,我们可以直接定义常量组。 在定义常量组时,若不提供初始值,则表示将使用上行的表达式。
package main import "fmt" const ( a = 3.14 b c d = 100 ) func main() { fmt.Println("a:", a) fmt.Println("b:", b) fmt.Println("c:", c) fmt.Println("d:", d) } //result a: 3.14 b: 3.14 c: 3.14 d: 100
1.3 常量枚举
枚举通常针对一个有穷序列集而言,一个集的枚举就是列出有穷序列集的所有成员。Go语言现阶段还没有枚举,但是我们可以使用一种特殊常量“iota”来模拟枚举。
iota 是Go语言的一个预定义标识符,它表示从0开始的连续整数。在每个const关键字出现时,iota都会重置为0。
package main import "fmt" func main() { const ( a = iota // 0 b // 1, 沿用上一行的 iota c = "Hello" // "Hello", iota = 2 但未使用 d // "Hello", 沿用上一行的表达式 e = iota // 4, iota 继续计数 f // 5 g = iota * 2 // 12, iota = 6 h // 14, 沿用 iota * 2 表达式 i = 1 b) fmt.Printf("a = b: %t\n", a >= b) fmt.Printf("a > 2 = %d, binary: %08b\n", result, result) // 7. 位清空 (&^) result = a &^ b fmt.Printf("a &^ b = %d, binary: %08b\n", result, result) } //result a = 60, binary: 00111100 b = 13, binary: 00001101 a & b = 12, binary: 00001100 a | b = 61, binary: 00111101 a ^ b = 49, binary: 00110001 ^a = -61, binary: 11000011 a > 2 = 15, binary: 00001111 a &^ b = 48, binary: 00110000
2.5 赋值运算符
最常用的赋值运算符是等号“=”,表示把右边的结果值赋值给左边的变量。其他的赋值运算 符大多都是算术运算符和赋值运算符的简写。
运算符 说明 示例 展开形式 = 将右边值赋给左边 a=100 a=100 += 将左边值加上右边值 a+=10 a=a+10 -= 将左边值减去右边值 a-=10 a=a-10 *= 将左边值乘以右边值 a*=10 a=a*10 /= 将左边值除以右边值 a/=10 a=a/10 %= 将左边值对右边值做取模 a%=10 a=a%10 **= 将左边值的右边值次方赋给左边 a**=2 a=a**2 //= 将左边值除以右边值(取整除) a//=3 a=a//3 &= 按位与运算后赋值 a&=5 a=a&5 |= 按位或运算后赋值 a|=5 a=a|5 ^= 按位异或运算后赋值 a^=5 a=a^5 >>= 右移运算后赋值 a>>=2 a=a>>2