banner
音小董

哩哔哩哔

这世上的热闹出自孤单

第3章:識別子、演算子、およびフロー制御

标識子#

标識子是什么#

== 答:變量、方法等的名稱就是標識子 ==

標識子的定義規則#

1. 由26個英文字母大小寫,0-9, _ 組成

2. 數字不可以開頭

3. Golang 中嚴格區分大小寫

4. 不能包含空格

5. 下劃線 "_" 本身在 Go 中是一個特殊的標識子,稱為空標識子。可以代表任何其他的標識子,但是它對應的值會被忽略(比如:忽略某個返回值),所以僅能夠被作為佔位符使用,不能作為標識子使用

6. 不能以系統保留字作為標識子,比如:brack , if 等

標識子的命名規則#

1. 包名,保持package的名字和目錄的名字保持一致,盡量採用有意義的包名,簡短,有意義,不要和標準庫衝突

2. 變量名,函數名,常量名,採用駝峰命名

3. 如果變量名、函數名、常量名首字母大寫,則可以被其他的包訪問;如果首字母小寫,則只能在本包內使用(注意:可以簡單的理解為,首字母大寫是公有的,首字母小寫是私有的)

關鍵字和預定義標識子#

關鍵字#

關鍵字是程式設計者規定有特殊含義的單詞,又叫保留字,go語言中一共有25個關鍵字
關鍵字.png

預定義標識子

預定義標識子一共36個,包含基礎數據類型和系統內嵌函數

預定義標識子.png

運算子#

運算子.png

算術運算子#

package main

import "fmt"

func main() {
	// +加號的運用
	//1、取正
	var n1 int = +8
	fmt.Println(n1)
	//2、相加操作
	var n2 int = 6 + 3
	fmt.Println(n2)
	//3、字符串拼接
	var n3 string = "a" + "b" + "c"
	fmt.Println(n3)

	// /除號的運用
	fmt.Println(10 / 3)   //兩個int類型運算結果為int類型
	fmt.Println(10.0 / 3) //浮點類型參與運算,結果為浮點類型

	// %取模(也叫餘數) 等價公式 a%b=a-a/b*b
	fmt.Println(10 % 3)   // 1
	fmt.Println(10 % -3)  // -1
	fmt.Println(-10 % 3)  // -1
	fmt.Println(-10 % -3) // 1

	// ++自增和--自減運用
	var a int = 10
	a++ //加1操作
	fmt.Println(a)
	a-- //減1操作
	fmt.Println(a)
}

賦值運算子#

package main

import "fmt"

func main() {
	var num1 int = 10
	fmt.Println(num1)
	var num2 int = (10+20)%3*8 - 14 // 等號右側運算完再賦值給左側
	fmt.Println(num2)

	var num3 int = 20
	num3 += 20 //等價於 num3 = num3 + 20
	fmt.Println(num3)

	//練習 交換兩個數的值(類似於交換兩個杯子裡的水,需要再借助第三個空杯)
	var a int = 6
	var b int = 9
	var x int
	x = a //先把a的值放到x裡臨時托管,所以a處於空閒狀態就可以進行下一步操作
	a = b //把b的值放到a裡面,a就接管了b的值,b現在處於空閒狀態
	b = x //把x的值再放到b,x的值是a傳過來的,所以等價於b接管了a的值,就實現了a和b值的交換
}

關係運算子#

package main

import "fmt"

func main() {
	fmt.Println(1 == 2) //判斷兩邊是否相等,如果相等返回true,如果不相等返回false
	fmt.Println(1 != 2) //判斷兩邊是否不相等,如果不相等返回true,如果相等返回false(跟==是反的)
	//其他關係運算子類比,就是符合條件返回true,不符合返回false
}

邏輯運算子#

package main

import "fmt"

func main() {
	//與邏輯:&&(可把true理解成真,把false理解成假,)
	//都為真才為真,只要有假就為假(一顆老鼠屎壞一鍋湯)
	//特點:左邊為假,右邊不需要參與運算,結果為false
	fmt.Println(true && true)   //真真為真,結果為true
	fmt.Println(true && false)  //真假為假,結果為false
	fmt.Println(false && true)  //假真為假,結果為false
	fmt.Println(false && false) //假假為假,結果為false
	//或邏輯:||
	//都為假才為假,只要有真就為真
	//特點:左邊為真,右邊不需要參與運算,結果為true
	fmt.Println(true && true)   //真真為真,結果為true
	fmt.Println(true && false)  //真假為真,結果為true
	fmt.Println(false && true)  //假真為真,結果為true
	fmt.Println(false && false) //假假為假,結果為false
	//非邏輯:!(取相反結果)
	fmt.Println(!true)  //結果為false
	fmt.Println(!false) //結果為true
}

位運算子#

僅簡單了解即可!

其他運算子#

&:返回變量的存儲地址

*:取指針變量對應的數值

參考指針部分:[[Go 語言入門學習筆記 / 第 4 章:複雜數據類型]]

運算子的優先級#

Go 語言有幾十種運算子,分割十個級別:
運算子優先級.png
== 提高優先級可以加括號 ()==

獲取用戶終端輸入#

func main() {
	//實現功能:鍵盤錄入學生年齡,姓名,成績,是否是VIP
	//方式一:Scanlan
	var age int
	fmt.Println("請錄入學生的年齡:")
	//傳入變量的地址的目的:在Scanln函數中,對地址中的值進行改變的時候,實際外面的age被影響了
	fmt.Scanln(&age)
	var name string
	fmt.Println("請錄入學生的姓名:")
	fmt.Scanln(&name)
	var score float32
	fmt.Println("請錄入學生的成績:")
	fmt.Scanln(&score)
	var isVIP bool
	fmt.Println("請錄入學生是否為VIP:")
	fmt.Scanln(&isVIP)
	fmt.Printf("學生的姓名為:%v,年齡為:%v,成績為:%v,是否為VIP:%v", name, age, score, isVIP)
	fmt.Println()
	//方式二:Scanf
	fmt.Println("請錄入學生的年齡, 姓名, 成績, 是否為VIP, 用空格隔開")
	fmt.Scanf("%d %s %f %t", &age, &name, &score, &isVIP)
	fmt.Printf("學生的姓名為:%v,年齡為:%v,成績為:%v,是否為VIP:%v", name, age, score, isVIP)
}
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。