Go小白入门3 – 运算符 & 控制语句

Go小白入门3 – 运算符 & 控制语句文章目录 1 运算符 1 1 基本运算符 1 2 指针相关的运算符 2 条件语句 2 1 基本条件语句 2 2switch 语句 1 举个栗子 2 TypeSwitch3 fallthrough2 3Select 语句 3 循环语句 4 小练习 4 1

大家好,欢迎来到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 条件语句

语法点

  • 判断条件不需要用括号括起来
  • 即使只有一行语句,大括号{}也必须存在
  • 左括号必须在ifelse同一行
  • 变量初始化语句,使用进行分隔
  • 在有返回值的函数中,最终的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. 参考资料

  1. Go菜鸟教程
  2. Datawhale组队学习

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/131169.html

(0)
上一篇 2025-08-09 21:00
下一篇 2025-08-09 21:10

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信