Go 语言中的运算符的特点是什么
更新时间:2023-11-13Go语言运算符的特点
Go语言作为一门静态类型的编程语言,提供了丰富的运算符支持,运算符在Go中的使用与其他的编程语言类似,但在Go中,运算符也有一些自己的特点:
- Go语言中的运算符可以分为算数运算符、比较运算符、逻辑运算符、位运算符、赋值运算符、其他运算符等几类。
- Go语言中的运算符是左结合的,即从左向右依次计算,除了赋值运算符“=”外,它是右结合的。
- Go语言中的运算符支持重载,一个运算符可以对应多个不同类型的操作数,这个特性使得Go语言的语义更加灵活。
- Go语言中不支持三目运算符,但可以通过if语句来实现三目运算符的效果。
算数运算符
算数运算符主要用于执行基本的算术操作,包括加法、减法、乘法、除法和取余操作;其中,“+”运算符还可以作为字符串的连接符使用,示例如下:
package main import "fmt" func main() { var a, b, c int = 2, 3, 0 c = a + b fmt.Printf("a + b = %d\n", c) c = a - b fmt.Printf("a - b = %d\n", c) c = a * b fmt.Printf("a * b = %d\n", c) c = a / b fmt.Printf("a / b = %d\n", c) c = a % b fmt.Printf("a %% b = %d\n", c) var str1, str2 string = "hello", "world" fmt.Println(str1 + str2) }
比较运算符
比较运算符主要用于比较两个值的大小关系,包括等于、不等于、大于、小于、大于等于和小于等于。比较运算符的结果是布尔值,即true或false。示例如下:
package main import "fmt" func main() { var a, b int = 2, 3 fmt.Printf("a == b 为 %t\n", a == b) fmt.Printf("a != b 为 %t\n", a != b) fmt.Printf("a > b 为 %t\n", a > b) fmt.Printf("a < b 为 %t\n", a < b) fmt.Printf("b >= a 为 %t\n", b >= a) fmt.Printf("b <= a 为 %t\n", b <= a) }
逻辑运算符
逻辑运算符主要用于对逻辑表达式求值,包括逻辑与、逻辑或和逻辑非。逻辑运算符的结果也是布尔值,即true或false。示例如下:
package main import "fmt" func main() { var a, b bool = true, false fmt.Printf("a && b 为 %t\n", a && b) fmt.Printf("a || b 为 %t\n", a || b) fmt.Printf("!a 为 %t\n", !a) }
位运算符
位运算符主要用于对二进制数进行位操作,包括按位与、按位或、按位异或和位移操作。位运算符常用于系统底层、网络编程和算法设计等领域,示例如下:
package main import "fmt" func main() { var a, b uint8 = 60, 13 fmt.Printf("a & b 的结果为 %d\n", a&b) fmt.Printf("a | b 的结果为 %d\n", a|b) fmt.Printf("a ^ b 的结果为 %d\n", a^b) fmt.Printf("a << 2 的结果为 %d\n", a<<2) fmt.Printf("a >> 2 的结果为 %d\n", a>>2) }
赋值运算符
赋值运算符主要用于给变量赋值,包括基本赋值、加等于、减等于、乘等于、除等于、取模等于、按位与等于、按位或等于和按位异或等式子。示例如下:
package main import "fmt" func main() { var a, b int = 21, 10 var c int c = a fmt.Printf("基本赋值运算符,c 的值为 %d\n", c) c += a fmt.Printf("加等于运算符,c 的值为 %d\n", c) c -= a fmt.Printf("减等于运算符,c 的值为 %d\n", c) c *= a fmt.Printf("乘等于运算符,c 的值为 %d\n", c) c /= a fmt.Printf("除等于运算符,c 的值为 %d\n", c) c = 200 c %= a fmt.Printf("取模等于运算符,c 的值为 %d\n", c) c <<= 2 fmt.Printf("按位与等于运算符,c 的值为 %d\n", c) c ^= a fmt.Printf("按位或等于运算符,c 的值为 %d\n", c) c >>= 2 fmt.Printf("按位异或等于运算符,c 的值为 %d\n", c) }
其他运算符
Go语言还提供了一些其他的运算符,包括地址运算符、指针运算符和取值运算符等等。这些运算符虽然用途不如其他的运算符广泛,但在某些场景下依然具有很重要的作用。示例如下:
package main import "fmt" func main() { var a int = 20 var ip *int ip = &a fmt.Printf("a 变量的地址是: %x\n", &a) fmt.Printf("ip 变量存储的指针地址: %x\n", ip) fmt.Printf("*ip 变量的值: %d\n", *ip) var ptr *int fmt.Printf("ptr 的值为 : %x\n", ptr) if ptr == nil { fmt.Printf("ptr 是空指针\n") } var ptr1 int = 10 var ptr2 *int ptr2 = &ptr1 fmt.Printf("ptr1 的值为 : %d\n", ptr1) fmt.Printf("*ptr2 的值为 : %d\n", *ptr2) }