大家好,欢迎来到IT知识分享网。
文章目录
1. 运算符
1.1 基本运算符
- 算术运算符 加减乘除
注意:自增,自减只能作为表达式使用,而不能用于赋值语句
// 不允许 - 会有编译错误 syntax error: unexpected ++ at end of statement a = a++
- 关系运算符 等于/小于
- 逻辑运算符(&& || !)
- 位运算符(& | ^ >> <<)
- 赋值运算符(上述运算符后加
=
)
1.2 指针相关的运算符
当变量前面有 * 标识时,才等同于 & 的用法,否则会直接输出地址
运算符 | 描述 | 实例 |
---|---|---|
& | 变量存储地址(地址值) | &a – 即变量的实际地址 |
* | 指针变量 | *a – 即一个指针变量 |
简单的栗子
package main func main() {
var a = 4 var b int32 var c float32 var ptr *int ptr = &a println(a, *ptr, ptr) // 4 4 0xc000037f70 println(b, c) // 0 +0.000000e+000 }
使用指针 VS 不使用指针
package main func main() {
// 不使用指针 var a = 4 var ptr int ptr = a println(ptr) // 4 a = 12 println(ptr) // 4 // 使用指针 var b = 5 var ptr1 *int ptr1 = &b println(*ptr1) // 5 b = 12 println(*ptr1) // 12 }
2 条件语句
语法点
- 判断条件不需要用括号括起来
- 即使只有一行语句,大括号
{}
也必须存在- 左括号必须在
if
或else
同一行- 变量初始化语句,使用
;
进行分隔- 在有返回值的函数中,最终的return不能在条件语句中
注意点
- Go没有三目运算符,所以不支持
?:
形式的条件判断- 条件判断语句里面允许声明一个变量(该变量的作用域只在该条件逻辑块内)
2.1 基本条件语句
- if语句
- if…else语句
- if … else if … else… 语句
- if 语句嵌套
2.2 switch 语句
- 不同case间不使用 break 分隔,默认只执行一个 case
- 如果想执行多个 case,需使用 fallthrough 关键字,也可用 break 提前终止
switch var1 {
case val1: ... // 多条件判断 case val, val3: ... default: ... }
1)举个栗子
package main import "fmt" func main() {
score := 90 grade := 'B' // 形式1 switch {
case score >= 90: grade = 'A' case score >= 80: grade = 'B' case score >= 60: grade = 'C' default: grade = 'D' } // 形式2 switch grade {
case 'A': fmt.Print("Excellent!") case 'B': fmt.Print("Good") case 'C': fmt.Print("Passed") case 'D': fmt.Print("Failed") } }
2)Type Switch
判断某个 interface 变量中实际存储的变量类型
var x interface{
} switch i := x.(type) {
case nil: ...
3)fallthrough
fallthrough不会判断下一条 case 的表达式结果是否为 true,会强制执行后面的 case 语句
package main import "fmt" func main() {
switch {
case false: fmt.Println("1 - false") fallthrough case true: fmt.Println("2 - true") fallthrough case false: fmt.Println("3 - false") fallthrough case true: fmt.Println("4 - true") case false: fmt.Println("5 - false") fallthrough default: fmt.Println("6 - default") } }
输出如下:
2 - true 3 - false 4 - true
2.3 Select 语句
select 会循环检测条件,如果有满足则执行并退出,否则一直循环检测
https://www.runoob.com/go/go-select-statement.html
3 循环语句
Go没有while
3.1 for循环
/* init - 赋初值 condition - 关系表达式,循环控制语句 post - 赋值(增量/减量) */ for init; condition; post {
} for condition {
} for {
} // Example for key, value := range oldMap{
newMap[key] = value }
For-each range 循环
对字符串、数组、切片等迭代输出元素
package main import "fmt" func main() {
strings := []string{
"aa", "bb"} for i, s := range strings {
fmt.Println(i, s) } numbers := [6]int{
1, 2, 3, 4} for i, x := range numbers {
fmt.Println(i, x) } }
3.2 循环控制语句(break、continue & goto)
3.2.1 break和continue
可使用标记标出想 break 或 continue 的循环
package main import "fmt" func main() {
// 使用标记 re: for i := 1; i <= 3; i++ {
fmt.Printf("i: %d\n", i) for i2 := 11; i2 <= 13; i2++ {
fmt.Printf("i2: %d\n", i2) break re } } }
3.2.2 goto 语句
- 可以无条件地转移到过程中指定的行
- 常与条件语句配合使用,来实现条件转移, 构成循环,跳出循环体等功能
- 不建议用goto,常造成混乱
九九乘法表
package main import "fmt" func main() {
for m := 1; m < 10; m++ {
n := 1 LOOP: if n <= m {
fmt.Printf("%dx%d=%d ", n, m, m*n) n++ goto LOOP } else {
fmt.Println("") } n++ } }
4. 小练习
4.1 运算符
1) 算术运算符 加减乘除
package main func main() {
a, b := 1, 2 var c int println(a, b, c) // 1 2 0 println(a + b) // 3 println(a - b) // -1 println(a / b) // 0 println(a % b) // 1 a++ println(a) // 2 a = 1 a-- println(a) // 0 }
2)关系运算符 等于/小于
package main func main() {
a, b := 1, 2 println(a == b) // false println(a != b) // true println(a < b) // true println(a <= b) // true }
3)逻辑运算符(&& || !)
package main func main() {
a, b := true, false println(a && b) // false println(a || b) // true println(!a) // false }
4.2 条件语句
1)判断输入是否为偶数
package main import "fmt" func main() {
var s int fmt.Print("Please type a number: ") fmt.Scan(&s) if s%2 == 0 {
fmt.Println("Input is even") } else {
fmt.Println("Input is odd") } fmt.Print("Input value is: ", s) }
2)在条件判断语句里声明变量
package main import "fmt" func main() {
if num := 9; num < 0 {
fmt.Println(num, "is negative") } else {
fmt.Println(num, "is positive") } }
3)判断用户密码输入
package main import "fmt" func main() {
const PASSWORD = 1234 var first int var second int fmt.Print("Please input the password: ") fmt.Scan(&first) if first == PASSWORD {
fmt.Println("Password is correct. The door is open.") } else {
fmt.Print("Your input is wrong. Please retry: ") fmt.Scan(&second) if second == PASSWORD {
fmt.Println("Password is correct. The door is open.") } else {
fmt.Println("An illegal invasion. An alert is fired...") } } }
4.3 循环语句
1)计算 1 到 10 的数字之和
package main import "fmt" func main() {
sum := 0 for i := 0; i <= 10; i++ {
sum += i } fmt.Println(sum) }
2)输出 2 到 100 间的素数
package main import "fmt" func main() {
for i := 2; i <= 100; i++ {
flag := true for j := 2; j <= i/j; j++ {
if i%j == 0 {
flag = false break } } if flag {
fmt.Println(i) } } }
3)九九乘法表
package main import "fmt" func main() {
for m := 1; m < 10; m++ {
for n := 1; n <= m; n++ {
fmt.Printf("%dx%d = %d ", m, n, m*n) } fmt.Println() } }
5. 参考资料
- Go菜鸟教程
- Datawhale组队学习
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/131169.html