golang第八課----Go 語言運算子
阿新 • • 發佈:2018-11-23
Go 語言運算子
運算子用於在程式執行時執行數學或邏輯運算。
Go 語言內建的運算子有:
算術運算子
關係運算符
邏輯運算子
位運算子
賦值運算子
其他運算子
接下來讓我們來詳細看看各個運算子的介紹。
算術運算子 加+ 減 - 乘 * 除 / 求餘 % 自增 ++ 自減 –
以下例項演示了各個算術運算子的用法:
package main import "fmt" func main() { var a int = 21 var b int = 10 var c int c = a + b fmt.Printf("第一行 - c 的值為 %d\n", c ) c = a - b fmt.Printf("第二行 - c 的值為 %d\n", c ) c = a * b fmt.Printf("第三行 - c 的值為 %d\n", c ) c = a / b fmt.Printf("第四行 - c 的值為 %d\n", c ) c = a % b fmt.Printf("第五行 - c 的值為 %d\n", c ) a++ fmt.Printf("第六行 - a 的值為 %d\n", a ) a=21 // 為了方便測試,a 這裡重新賦值為 21 a-- fmt.Printf("第七行 - a 的值為 %d\n", a ) }
以上例項執行結果:
第一行 - c 的值為 31
第二行 - c 的值為 11
第三行 - c 的值為 210
第四行 - c 的值為 2
第五行 - c 的值為 1
第六行 - a 的值為 22
第七行 - a 的值為 20
關係運算符 == != > < >= <=
示例演示如下
package main import "fmt" func main() { var a int = 21 var b int = 10 if( a == b ) { fmt.Printf("第一行 - a 等於 b\n" ) } else { fmt.Printf("第一行 - a 不等於 b\n" ) } if ( a < b ) { fmt.Printf("第二行 - a 小於 b\n" ) } else { fmt.Printf("第二行 - a 不小於 b\n" ) } if ( a > b ) { fmt.Printf("第三行 - a 大於 b\n" ) } else { fmt.Printf("第三行 - a 不大於 b\n" ) } /* Lets change value of a and b */ a = 5 b = 20 if ( a <= b ) { fmt.Printf("第四行 - a 小於等於 b\n" ) } if ( b >= a ) { fmt.Printf("第五行 - b 大於等於 a\n" ) } }
執行如下
第一行 - a 不等於 b
第二行 - a 不小於 b
第三行 - a 大於 b
第四行 - a 小於等於 b
第五行 - b 大於等於 a
邏輯運算子&& || !
示例如下
package main import "fmt" func main() { var a bool = true var b bool = false if ( a && b ) { fmt.Printf("第一行 - 條件為 true\n" ) } if ( a || b ) { fmt.Printf("第二行 - 條件為 true\n" ) } /* 修改 a 和 b 的值 */ a = false b = true if ( a && b ) { fmt.Printf("第三行 - 條件為 true\n" ) } else { fmt.Printf("第三行 - 條件為 false\n" ) } if ( !(a && b) ) { fmt.Printf("第四行 - 條件為 true\n" ) } }
執行如下
第二行 - 條件為 true
第三行 - 條件為 false
第四行 - 條件為 true
位運算子
示例如下
package main
import "fmt"
func main() {
var a uint = 60 /* 60 = 0011 1100 */
var b uint = 13 /* 13 = 0000 1101 */
var c uint = 0
c = a & b /* 12 = 0000 1100 */
fmt.Printf("第一行 - c 的值為 %d\n", c )
c = a | b /* 61 = 0011 1101 */
fmt.Printf("第二行 - c 的值為 %d\n", c )
c = a ^ b /* 49 = 0011 0001 */
fmt.Printf("第三行 - c 的值為 %d\n", c )
c = a << 2 /* 240 = 1111 0000 */
fmt.Printf("第四行 - c 的值為 %d\n", c )
c = a >> 2 /* 15 = 0000 1111 */
fmt.Printf("第五行 - c 的值為 %d\n", c )
}
執行如下
第一行 - c 的值為 12
第二行 - c 的值為 61
第三行 - c 的值為 49
第四行 - c 的值為 240
第五行 - c 的值為 15
賦值運算子= += -= *= /= %= <<= >>= &= ^= |=
package main
import "fmt"
func main() {
var a int = 21
var c int
c = a
fmt.Printf("第 1 行 - = 運算子例項,c 值為 = %d\n", c )
c += a
fmt.Printf("第 2 行 - += 運算子例項,c 值為 = %d\n", c )
c -= a
fmt.Printf("第 3 行 - -= 運算子例項,c 值為 = %d\n", c )
c *= a
fmt.Printf("第 4 行 - *= 運算子例項,c 值為 = %d\n", c )
c /= a
fmt.Printf("第 5 行 - /= 運算子例項,c 值為 = %d\n", c )
c = 200;
c <<= 2
fmt.Printf("第 6行 - <<= 運算子例項,c 值為 = %d\n", c )
c >>= 2
fmt.Printf("第 7 行 - >>= 運算子例項,c 值為 = %d\n", c )
c &= 2
fmt.Printf("第 8 行 - &= 運算子例項,c 值為 = %d\n", c )
c ^= 2
fmt.Printf("第 9 行 - ^= 運算子例項,c 值為 = %d\n", c )
c |= 2
fmt.Printf("第 10 行 - |= 運算子例項,c 值為 = %d\n", c )
}
執行如下
第 1 行 - = 運算子例項,c 值為 = 21
第 2 行 - += 運算子例項,c 值為 = 42
第 3 行 - -= 運算子例項,c 值為 = 21
第 4 行 - *= 運算子例項,c 值為 = 441
第 5 行 - /= 運算子例項,c 值為 = 21
第 6行 - <<= 運算子例項,c 值為 = 800
第 7 行 - >>= 運算子例項,c 值為 = 200
第 8 行 - &= 運算子例項,c 值為 = 0
第 9 行 - ^= 運算子例項,c 值為 = 2
第 10 行 - |= 運算子例項,c 值為 = 2
其他運算子& *
示例
package main
import "fmt"
func main() {
var a int = 4
var b int32
var c float32
var ptr *int
/* 運算子例項 */
fmt.Printf("第 1 行 - a 變數型別為 = %T\n", a );
fmt.Printf("第 2 行 - b 變數型別為 = %T\n", b );
fmt.Printf("第 3 行 - c 變數型別為 = %T\n", c );
/* & 和 * 運算子例項 */
ptr = &a /* 'ptr' 包含了 'a' 變數的地址 */
fmt.Printf("a 的值為 %d\n", a);
fmt.Printf("*ptr 為 %d\n", *ptr);
}
結果
第 1 行 - a 變數型別為 = int
第 2 行 - b 變數型別為 = int32
第 3 行 - c 變數型別為 = float32
a 的值為 4
*ptr 為 4
運算子優先順序
示例如下
package main
import "fmt"
func main() {
var a int = 20
var b int = 10
var c int = 15
var d int = 5
var e int;
e = (a + b) * c / d; // ( 30 * 15 ) / 5
fmt.Printf("(a + b) * c / d 的值為 : %d\n", e );
e = ((a + b) * c) / d; // (30 * 15 ) / 5
fmt.Printf("((a + b) * c) / d 的值為 : %d\n" , e );
e = (a + b) * (c / d); // (30) * (15/5)
fmt.Printf("(a + b) * (c / d) 的值為 : %d\n", e );
e = a + (b * c) / d; // 20 + (150/5)
fmt.Printf("a + (b * c) / d 的值為 : %d\n" , e );
}
執行
(a + b) * c / d 的值為 : 90
((a + b) * c) / d 的值為 : 90
(a + b) * (c / d) 的值為 : 90
a + (b * c) / d 的值為 : 50