写点什么

【一 Go 到底】第七天 --- 运算符

作者:指剑
  • 2022 年 10 月 07 日
    重庆
  • 本文字数:2090 字

    阅读完需:约 7 分钟

【一Go到底】第七天---运算符

一、运算符介绍

运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等


  1. 算术运算符

  2. 赋值运算符

  3. 比较运算符/关系运算符

  4. 逻辑运算符

  5. 位运算符

  6. 其他运算符

二、算术运算符

算术运算符是对数值类型的变量进行运算的,比如:加诚乘除



package main
import "fmt"
func main() {
// 除法演示 // 参与运算双方都为整数,运算结果去掉小数部分,保留整数部分 fmt.Println(10 / 4) // 输出为 2
fmt.Println(float32(10 / 4)) // 依旧输出为2
// 保留小数部分 // 取决于参与运算部分是否有浮点数 fmt.Println(float32(10.0 / 4)) // 输出为 2.5
// 取模 // 取模公式 a % b = a - a / b * b fmt.Println("10 % 3 =", 10%3) fmt.Println("-10 % 3 =", -10%3) fmt.Println("10 % -3 =", 10%-3) fmt.Println("-10 % -3 =", -10%-3)
// ++ 和 -- 使用案例 //注意 自增自减只能作为独立语言使用 // 错误语法 --> b := a++ // 没有 ++a --a var a int = 1 a++ // a = a + 1 fmt.Println("a=", a) //2 a-- // a = a - 1 fmt.Println("a=", a) //1
}
复制代码

2.1 案例一 天数转换

package main
import "fmt"
func main() {
// 还有100天放假,请换算为 xx周xx天 var days int = 100 var weeks int = days / 7 var ext_day int = days % 7 fmt.Printf("还有 %v 周零 %v 天\n", weeks, ext_day)}
复制代码

2.2 案例二 温度转换

package main
import "fmt"
func main() {
// 将华氏温度转换为摄氏度 // 公式 5/9*(华氏温度-100) var fad float64 = 150 // 如果写成 5 那么结果会一直为 0 var cent float64 = 5.0 / 9 * (fad - 100) fmt.Printf("%v 华氏度对应的摄氏度为: %v", fad, cent)}
复制代码

三、关系运算符/比较运算符

  • 关系运算符的结果都是 bool 型,要么是 true,要么是 false

  • 关系表达式经常用在 if 结构的条件中或循环结构的条件中



package main
import "fmt"
func main() {
// 定义两个变量 var a int = 1 var b int = 2
fmt.Println(a == b) //false fmt.Println(a != b) //true fmt.Println(a > b) //false fmt.Println(a < b) //true fmt.Println(a >= b) //false fmt.Println(a <= b) //true
}
复制代码

四、逻辑运算符

用于连接多个条件(一般来讲就是关系表达式),最终的结果也是一个 bool 值。


若 A=True B=False



package main
import "fmt"
func main() { var a bool = true var b bool = false
fmt.Println(a && b) // false fmt.Println(a || b) // true fmt.Print(!(a && b)) // true}
复制代码

4.1 注意事项

  1. &&也叫短路与:如果第一个条件为 false,则第二个条件不会判断,最终结果为 false

  2. || 也叫短路或: 如果第一个条件为 true, 则第二个条件不会判断,最终结果为 true

五、赋值运算符

赋值运算符就是将某个运算后的值,赋给指定的变量



package main
import "fmt"
func test() int { return 90}
func main() {
// 基本赋值 var a int a = 1 fmt.Println("a = ", a) // 交换变量值 m := 10 n := 20 //定义临时变量 t := m m = n // m = 20 n = t // n = 10 fmt.Printf("m = %v, n = %v\n", m, n)
// 复合赋值 a += 10 // a = a + 10 fmt.Println("a = ", a)
// 赋值运算执行顺序 从右往左
b := a + 10 fmt.Println("b = ", b)
// 赋值表达式左侧 只能为 变量。 右侧可以为 变量/表达式/常量值 // 表达式:任何有值的都可以看作表达式 var d int d = a d = 8 + 8*8 // 右侧为表达式 d = test() + 10 // 右侧为表达式 d = 10086 // 常量 fmt.Println("d = ", d)
}
复制代码

5.1 案例一 交换变量值

交换变量 a,b 的值,不能使用中间变量,打印出最终结果


package main
import "fmt"
func test() int { return 90}
func main() { // 方法1 j := 10 k := 20 j, k = k, j fmt.Printf("j = %v, k = %v\n", j, k)
//法2 j1 := 10 k1 := 20 j1 += k1 // j1 = 30 k1 = j1 - k1 // k1 = 20 j1 -= k1 // j1 = 20 fmt.Printf("j1 = %v, k1 = %v\n", j1, k1)}
复制代码

六、位运算符

七、其他运算符


package main
import ( "fmt")
func main() { // 查看 i 的地址 var i int = 1 fmt.Println("a 地址为: ", &i)
// 指针变量 var ptr *int = &i fmt.Println("ptr = ", *ptr) // ptr 为 1
// 不支持三元运算,使用if-else代替 var o int var n int = 10 var m int = 20 if n > m { o = n } else { o = m } fmt.Println("o = ", o)}
复制代码

八、三元运算

Go 语言明确说明不支持三元运算,请使用 if-else 代替

九、案例演示

package main
import "fmt"
func main() { // 两数求最大 var n1 int = 10 var n2 int = 20 var max int if n1 > n2 { max = n1 } else { max = n2 }
fmt.Println("max = ", max)
// 三个数求最大值 var n3 = 30 if max < n3 { max = n3 } fmt.Println("max = ", max)}
复制代码


发布于: 刚刚阅读数: 3
用户头像

指剑

关注

InfoQ签约作者 2022.07.13 加入

AWS Community Builder,AWS Student Ambassador,阿里云专家博主,OPS社区创始成员

评论

发布
暂无评论
【一Go到底】第七天---运算符_Go_指剑_InfoQ写作社区