算數(shù)運(yùn)算符
運(yùn)算符
描述
實(shí)例
+
相加
A + B
-
相減
A - B
*
相乘
A * B
/
相除
B / A
%
求余
B % A
++
自增
A++
–
自減
A–
注意點(diǎn):
只有相同類型的數(shù)據(jù)才能進(jìn)行運(yùn)算
package main
import "fmt"
int main(){
var num1 int32 = 10
//var num2 int64 = num1 // 類型不同不能進(jìn)行賦值運(yùn)算
var num2 int64 = int64(num1) // 類型不同不能進(jìn)行賦值運(yùn)算
fmt.Println(num2)
var num3 int32 = 10
var num4 int64 = 20
//var res int64 = num3 + num4 // 類型不同不能進(jìn)行算數(shù)運(yùn)算
var res1 int64 = int64(num3) + num4 // 類型不同不能進(jìn)行算數(shù)運(yùn)算
fmt.Println(res1)
var num5 int32 = 10
var num6 int64 = 20
//var res2 bool = (num5 == num6) // 類型不同不能進(jìn)行關(guān)系運(yùn)算
var res2 bool = (num5 == int32(num6)) // 類型不同不能進(jìn)行關(guān)系運(yùn)算
fmt.Println(res2)
// ... ... 其它以此類推
}
Go語言中++、–運(yùn)算符不支持前置
Go語言中++、–是語句,不是表達(dá)式,所以必須獨(dú)占一行
錯(cuò)誤寫法: a = i++; return i++;
package main
import "fmt"
func main() {
num1 := 0
num1++
fmt.Println(num1)
//++num1 // 編譯報(bào)錯(cuò), Go語言中++只能后置,不能前置
//fmt.Println(num1)
//var num2 int = num1++ // 編譯報(bào)錯(cuò), num1++是語句不是表達(dá)式, 所以必須獨(dú)占一行
//fmt.Println(num2)
}
Go語言中字符串支持利用+號(hào)進(jìn)行拼接
package main
import "fmt"
func main() {
str := "abc" + "def"
//fmt.Println(str)
}
關(guān)系算符
運(yùn)算符
描述
實(shí)例
==
檢查兩個(gè)值是否相等,如果相等返回 True 否則返回 False。
A == B
!=
檢查兩個(gè)值是否不相等,如果不相等返回 True 否則返回 False。
A != B
>
檢查左邊值是否大于右邊值,如果是返回 True 否則返回 False。
A > B
檢查左邊值是否小于右邊值,如果是返回 True 否則返回 False。
A B
>=
檢查左邊值是否大于等于右邊值,如果是返回 True 否則返回 False。
A >= B
=
檢查左邊值是否小于等于右邊值,如果是返回 True 否則返回 False。
A = B
注意點(diǎn):
和C語言不通的是, Go語言中關(guān)系運(yùn)算符只能返回true和false
邏輯運(yùn)算符
運(yùn)算符
描述
實(shí)例
如果兩邊的操作數(shù)都是 True,則條件 True,否則為 False。
A B
\|\|
如果兩邊的操作數(shù)有一個(gè) True,則條件 True,否則為 False。
A || B
!
如果條件為 True,則邏輯 NOT 條件 False,否則為 True。
!A
注意點(diǎn):
和C語言不通的是, Go語言中關(guān)系運(yùn)算符只能返回true和false
邏輯非只能用于true和false
位運(yùn)算符
運(yùn)算符描述實(shí)例參與運(yùn)算的兩數(shù)各對(duì)應(yīng)的二進(jìn)位相與, 對(duì)應(yīng)位只要都是1結(jié)果就為1A B\|
參與運(yùn)算的兩數(shù)各對(duì)應(yīng)的二進(jìn)位相或,對(duì)應(yīng)位只要其中一個(gè)是1結(jié)果就為1A | B^參與運(yùn)算的兩數(shù)各對(duì)應(yīng)的二進(jìn)位相異或,對(duì)應(yīng)位只要不同結(jié)果就是1A ^ B左移運(yùn)算符,左移n位就是乘以2的n次方A 2>>右移運(yùn)算符,右移n位就是除以2的n次方B >> 2^邏輯清零運(yùn)算符, B對(duì)應(yīng)位是1,A對(duì)應(yīng)位清零,B對(duì)應(yīng)位是0, A對(duì)應(yīng)位保留原樣A ^ B
int main(){
/*
0110 a
^1011 b 如果b位位1,那么結(jié)果為0, 否則結(jié)果為a位對(duì)應(yīng)的值
----------
0100
*/
a1 := 6
b1 := 11
res1 := a1 ^ b1
fmt.Println("res1 = ", res1) // 4
/*
1011 a
^1101 b 如果b位位1,那么結(jié)果為0, 否則結(jié)果為a位對(duì)應(yīng)的值
----------
0010
*/
a2 := 11
b2 := 13
res2 := a2 ^ b2
fmt.Println("res2 = ", res2) // 2
}
賦值運(yùn)算符
運(yùn)算符
描述
實(shí)例
=
將右邊賦值給左邊
C = A + B 將 A + B 表達(dá)式結(jié)果賦值給 C
+=
相加后再賦值
C += A 等于 C = C + A
-=
相減后再賦值
C -= A 等于 C = C - A
*=
相乘后再賦值
C *= A 等于 C = C * A
/=
相除后再賦值
C /= A 等于 C = C / A
%=
求余后再賦值
C %= A 等于 C = C % A
=
左移賦值
C = 2 等于 C = C 2
>>=
右移賦值
C >>= 2 等于 C = C >> 2
=
位邏輯與賦值
C = 2 等于 C = C 2
^=
位邏輯或賦值
C ^= 2 等于 C = C ^ 2
\|=
位邏輯異或賦值
C |= 2 等于 C = C | 2
^=
位邏輯清零賦值
C ^= 2 等于 C = C ^ 2
其它運(yùn)算符
運(yùn)算符
描述
實(shí)例
返回變量存儲(chǔ)地址
a; 將給出變量的實(shí)際地址
*
訪問指針指向內(nèi)存
*p; 訪問指針p指向內(nèi)存
package main
import "fmt"
int main(){
var num int = 666
var p *int = num
fmt.Println(num)
fmt.Println(*p)
num = 777
fmt.Println(num)
*p = 999
fmt.Println(num)
}
注意點(diǎn)
指針類型只支持相等運(yùn)算, 不能做加減運(yùn)算
#include stdio.h>
int main()
{
int ages[3] = {19, 23, 22};
int *arrayP = ages[0];
printf("ages[0] = %i\n", *(arrayP + 0)); // *(arrayP + 0) == *arrayP
printf("ages[1] = %i\n", *(arrayP + 1));
printf("ages[2] = %i\n", *(arrayP + 2));
return 0;
}
package main
import "fmt"
int main(){
var ages [3]int = [3]int{19, 23, 22}
var p *int = ages[0]
//fmt.Println(ages[0])
//fmt.Println(*p) // 19
fmt.Println(*(p + 0)) // 編譯報(bào)錯(cuò)
}
運(yùn)算符優(yōu)先級(jí)
和C語言一樣, 只需記住()優(yōu)先級(jí)最高即可
到此這篇關(guān)于Go語言運(yùn)算符案例講解的文章就介紹到這了,更多相關(guān)Go語言運(yùn)算符內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章: Golang 運(yùn)算符及位運(yùn)算詳解 golang中為什么不存在三元運(yùn)算符詳解 手把手帶你走進(jìn)Go語言之運(yùn)算符解析