开发者学堂课程【Go 语言核心编程 - 基础语法、数组、切片、Map :其他运算符】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/625/detail/9550
其他运算符
内容简介:
一、位运算符
二、其它运算符说明
三、特别说明
一、位运算符
运算符 |
描述 |
& |
按位与运算行"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。运算规则是:同时为1,结果为1,否则为0 |
| |
按位或运算符”"是双目运算符。其功能是参与运算的两数各对应的二进位相或 运算规则是:有一个为1结果为1.否则为0 |
^ |
按位异或运算符""是双目运算符。其功能是参与运算的两数各对应的二进位相异或 运算规则是:当二进位不同时,结果为1.否则为0 |
<< |
<< 左移运算符"<<"是双目运算符。其功能把<<"左边的运算数的各二进位全 左移若干位,高位丢弃,低位补0。左移n位就是乘以2的n次方。 |
>> |
右移运算符">>"是双目运算符。其功能是把>>"左边的运算数的各二进位全部 右移若干位右移n位就是除以2的n次方 |
说明:
因为位运算涉及到二进制相关知识,我们仍然放到讲二进制时,在详细讲解。
二、其它运算符说明
运算符 |
描述 |
实例 |
& |
返回变量存储地址 |
&a;将给出变量的实际地址。 |
* |
指针变量 |
*a;是一个指针变量 |
举例说明:
相关代码:
package main
Import
(
"fmt"
)
func main()(
//演示一把&和*的使用
a :=100
fmt.Println("a 的地址=",&a)
var ptr *int = &a
fmt.Println("ptr 指向的值是=",*ptr)
课堂案例
案例1:求两个数的最大值
f
unc
main
()
{
//求两个数的最大值
var n1 int = 10
var n2 int =40
var max int if n1 > n2 {
max = n1
}else {
max = n2
}
fmt.Println("max=”,max)
}
案例2:
求三个数的最大值
func main()
{
//求两个数的最大值
var n1 int = 10
var n2 int = 40
var max int if n1 > n2 {
max=n1
} else {
max = n2
}
fmt.Println("max=",max)
/
/求出三个数的最大值思路:
先求出两个数的最大值,
//然后让这个最大值和第三数比较,在取出最大值
var n3 = 45
if n3 > max {
max=n3
}
fmt.Println("三个数中最大值是=",max)
}
三、特别说明
Go 语言明确不支持三元运算符,
官方说明:
https://golang.org/doc/faq#Does_ Go_ have_a_ternary_ form Does Go have the ?: operator?
There is no ternary testing operation in Go You may use the following to achieve the same result
if expr {
n=trueVal
} else {
N=falseVal
}
Golang 的设计理念:
一种事情有且只有一种方法完成
举例说明,如果在 golang 中实现三元运算的效果。
var n int
var i int =10
var j int = 12
//传统的三元运算
/n=i>j
?
i:j i
:
f
n=i
else {
n=j
fmt.Println("n=",n)//12
}