go 語(yǔ)言基礎(chǔ)
運(yùn)算符是一種特殊的符號(hào),用以表示數(shù)據(jù)的運(yùn)算賦值和比較
運(yùn)算符
算術(shù)運(yùn)算符: +,-,*,/,%,++,--
賦值運(yùn)算符:=,+=,-=,*=,/=,%=
關(guān)系運(yùn)算符: ==,!=,>,<,>=,<=
邏輯運(yùn)算符: &&,||,!
位運(yùn)算符: &,|,^
其他運(yùn)算符: &,*
算術(shù)運(yùn)算符
package main
import (
"fmt"
_"image"
)
func main(){
//+ 整數(shù),相加操作,拼接操作
var n1 int = +10
fmt.Println(n1)
var n2 int = 4 + 9
fmt.Println(n2)
var s1 string = "cx" + "draw"
fmt.Println(s1)
// /除號(hào)
fmt.Println(10/3)//兩個(gè)int數(shù)據(jù)運(yùn)算結(jié)果一定為整數(shù)類型
fmt.Println(10.0/3)// 浮點(diǎn)類型參與運(yùn)算結(jié)果為浮點(diǎn)運(yùn)行
// %取模
fmt.Println(10%3)
fmt.Println(-10%3)
fmt.Println(10%-3)
//++自增
var a int = 10
a++
fmt.Println(a)
//go 語(yǔ)言里++,-- 操作比較簡(jiǎn)單,只能單獨(dú)使用不能參與運(yùn)算
// go 語(yǔ)言里++,-- 只能在變量后面不能寫在前面
}
/* 執(zhí)行結(jié)果
10
13
cxdraw
3
3.3333333333333335
1
-1
1
11 */
賦值運(yùn)算
package main
import "fmt"
func main(){
var num1 int =10
fmt.Println(num1)
var num2 int = (10+20)% 3 + 3 - 7 //= 號(hào)右側(cè)運(yùn)算完成后,在賦值給左側(cè)
fmt.Println(num2)
//+=
var num3 int = 10
fmt.Println(num3)
num3 +=2 //等價(jià)num3 = num3+2
fmt.Println(num3)
// 交換兩個(gè)數(shù)的值
var a int = 8
var b int = 4
fmt.Printf("a=%v,b=%v\n",a,b)
//交換引入中間值
var c int
c = a
a = b
b = c
fmt.Printf("交換后的值:a=%v,b=%v\n",a,b)
}
/* 執(zhí)行結(jié)果
D:\golang\goproject\src\src01>go run demo18\main.go
10
-4
10
12
a=8,b=4
交換后的值:a=4,b=8 */
關(guān)系運(yùn)算符 結(jié)果只能是bool 類型 要么true 要么false(判斷對(duì)錯(cuò))
package main
import "fmt"
func main(){
fmt.Println(5==9)//判斷5,9 是否相等 不相等f(wàn)alse
fmt.Println(5!=9)//判斷5,9 是否不等 不等 true
fmt.Println(5>9) //判斷5是否比9大 ,不比9大 就是false
fmt.Println(5>=9)//判斷5是否大于等于9 ,不大于等于9 就是錯(cuò)錯(cuò)是false
fmt.Println(5<=9) // 判斷5是否小于等于9,不小于等于9就是錯(cuò),小于或者等于9 就是對(duì)true
/* 執(zhí)行結(jié)果
D:\golang\goproject\src\src01>go run demo19\main.go
false
true
false
false
true */
}
邏輯運(yùn)算符
package main
import "fmt"
func main(){
//與邏輯&&
fmt.Println(true&&true) //true
fmt.Println(true&&false) // false
fmt.Println(false&&true) //false
fmt.Println(false&&false) //false
fmt.Println("-------------------------------------------------")
//或邏輯 ||
fmt.Println(true||true) //true
fmt.Println(true||false) // true
fmt.Println(false||true) // true
fmt.Println(false||false) //false
fmt.Println("------------------------------------------------")
//非邏輯 取反
fmt.Println(!true) //false
fmt.Println(!false) // true
/* 執(zhí)行結(jié)果
D:\golang\goproject\src\src01>go run demo20\main.go
true
false
false
false
-------------------------------------------------
true
true
true
false
------------------------------------------------
false
true
*/
}
其他運(yùn)算符
& 返回地址值;* 取地址值對(duì)應(yīng)的數(shù)值
package main
import "fmt"
func main(){
//定義一個(gè)變量
var age int = 18
fmt.Println("age對(duì)應(yīng)的地址值",&age)
var ptr *int = &age
fmt.Println("ptr指向的值",*ptr)
}
/* 執(zhí)行結(jié)果
D:\golang\goproject\src\src01>go run demo21\main.go
age對(duì)應(yīng)的地址值 0xc00000a0b8
ptr指向的值 18 */
運(yùn)算符的優(yōu)先級(jí)
優(yōu)先級(jí) 分類 運(yùn)算符 結(jié)合性
1 逗號(hào) , 左到右
2 賦值運(yùn)算符 =、+=、-=、*=、/=、%=、>=、<<=、&<、^=、|= 從右到左
3 邏輯或 ||
4 邏輯與 &&
5 按位或 |
6 按位異或 ^
7 按位與 &
8 相等/不相等 ==、!= 左到右
9 關(guān)系運(yùn)算符 <、<=、>、>= 左到右
10 位移運(yùn)算符 <<,>> 左到右
11 加減 +、- 左到右
12 乘法、除法、取余 * 、/ 、% 左到右
13 單目運(yùn)算 !、*、&、++、--、+、- 右到左
14 后綴運(yùn)算符 ()、[]、-> 左到右
為了提高有效級(jí),可以加()
獲取用戶終端輸入
func Scanln func Scanln(a ...interface{}) (n int, err error)
Scanln類似Scan,但會(huì)在換行時(shí)才停止掃描。最后一個(gè)條目后必須有換行或者到達(dá)結(jié)束位置。
package main
import "fmt"
func main(){
//實(shí)現(xiàn)功能,鍵盤錄入學(xué)生的年齡,姓名成績(jī),是否是vip
//方式1:Scanln
var age int
fmt.Println("請(qǐng)錄入年齡:")
//傳入age的地址目的:在Scanln函數(shù)中,對(duì)地址中的值進(jìn)行改變的時(shí)候?qū)嶋H外面的age被影響了
fmt.Scanln(&age)
var name string
fmt.Println("請(qǐng)錄入姓名:")
//傳入name的地址目的:在Scanln函數(shù)中,對(duì)地址中的值進(jìn)行改變的時(shí)候?qū)嶋H外面的name被影響了
fmt.Scanln(&name)
var score float32
fmt.Println("請(qǐng)錄入成績(jī):")
//傳入score的地址目的:在Scanln函數(shù)中,對(duì)地址中的值進(jìn)行改變的時(shí)候?qū)嶋H外面的score被影響了
fmt.Scanln(&score)
var isVip bool
fmt.Println("是否vip:")
//傳入isVIP的地址目的:在Scanln函數(shù)中,對(duì)地址中的值進(jìn)行改變的時(shí)候?qū)嶋H外面的isVIP被影響了
fmt.Scanln(&isVip)
//打印輸出
fmt.Printf("學(xué)生年齡:%d 姓名:%s 成績(jī):%g是否vip:%t",age,name,score,isVip)
/* 執(zhí)行結(jié)果
D:\golang\goproject\src\src01>go run demo22\main.go
請(qǐng)錄入年齡:
15
請(qǐng)錄入姓名:
chenxi
請(qǐng)錄入成績(jī):
89.5
是否vip:
true
學(xué)生年齡:15 姓名:chenxi 成績(jī):89.5是否vip:true */
}
func Scanf func Scanf(format string, a ...interface{}) (n int, err error)
Scanf從標(biāo)準(zhǔn)輸入掃描文本,根據(jù)format 參數(shù)指定的格式將成功讀取的空白分隔的值保存進(jìn)成功傳遞給本函數(shù)的參數(shù)。返回成功掃描的條目個(gè)數(shù)和遇到的任何錯(cuò)誤。
package main
import "fmt"
func main(){
//方式2:Scanf
var age int
var name string
var score float32
var isVip bool
fmt.Println("請(qǐng)錄入學(xué)生年齡,姓名,成績(jī),是否是vip,使用空格進(jìn)行分割")
fmt.Scanf("%d %s %g %t",&age,&name,&score,&isVip )
//將上述數(shù)據(jù)在控制臺(tái)打印輸出
fmt.Printf("學(xué)生年齡:%d 姓名:%s 成績(jī):%g是否vip:%t",age,name,score,isVip)
/* 執(zhí)行結(jié)果
D:\golang\goproject\src\src01>go run demo22\main.go
請(qǐng)錄入學(xué)生年齡,姓名,成績(jī),是否是vip,使用空格進(jìn)行分割
18 chenxi 89.5 true
學(xué)生年齡:18 姓名:chenxi 成績(jī):89.5是否vip:true
*/
}
草都可以從石頭縫隙中長(zhǎng)出來(lái)更可況你呢

浙公網(wǎng)安備 33010602011771號(hào)