4.golang 基礎

1.包別名
	import 別名 "fmt" // alias3
	別名.Println("hello,go")

2.可見性規則
	當標識符(包括常量、變量、類型、函數名、結構字段等等)以一個大寫字母開頭,
	如:Group1,那麼使用這種形式的標識符的對象就可以被外部包的代碼所使用(客戶端程序需要先導入這個包),
	這被稱爲導出(像面嚮對象語言中的 public);標識符如果以小寫字母開頭,則對包外是不可見的,
	但是他們在整個包的內部是可見並且可用的(像面嚮對象語言中的 private )。

3.函數
	main 函數是每一個可執行程序所必須包含的,一般來說都是在啓動後第一個執行的函數(如果有 init() 函數則會先執行該函數)。
	main 函數既沒有參數,也沒有返回類型(與 C 家族中的其它語言恰好相反)

	func functionName(parameter_list) (return_value_list) {
   		…	
	}

4.Go 程序的執行(程序啓動)順序如下:

	按順序導入所有被 main 包引用的其它包,然後在每個包中執行如下流程:
	如果該包又導入了其它的包,則從第一步開始遞歸執行,但是每個包只會被導入一次。
	然後以相反的順序在每個包中初始化常量和變量,如果該包含有 init 函數的話,則調用該函數。
	在完成這一切之後,main 也執行同樣的過程,最後調用 main 函數開始執行程序。

5.類型轉換
	由於 Go 語言不存在隱式類型轉換,因此所有的轉換都必須顯式說明,就像調用一個函數一樣(類型在這裏的作用可以看作是一種函數);
	valueOfTypeB = typeB(valueOfTypeA)
	a := 5.0
	b := int(a)

6.常量
	常量使用關鍵字 const 定義,用於存儲不會改變的數據。
	在 Go 語言中,你可以省略類型說明符 [type],因爲編譯器可以根據變量的值來推斷其類型。
	顯式類型定義: const b string = "abc"
	隱式類型定義: const b = "abc"
	常量的值必須是能夠在編譯時就能夠確定的
	因爲在編譯期間自定義函數均屬於未知,因此無法用於常量的賦值,但內置函數可以使用,如:len()。

7.init函數
	變量除了可以在全局聲明中初始化,也可以在 init 函數中初始化。這是一類非常特殊的函數,
	它不能夠被人爲調用,而是在每個包完成初始化後自動執行,並且執行優先級比 main 函數高。
	每個源文件都只能包含一個 init 函數。初始化總是以單線程執行,並且按照包的依賴關係順序執行。
	一個可能的用途是在開始執行程序之前對數據進行檢驗或修復,以保證程序狀態的正確性。

8.類型別名
	在 type TZ int 中,TZ 就是 int 類型的新名稱


9.字符串
	Go 支持以下 2 種形式的字面值:
		1.解釋字符串:該類字符串使用雙引號括起來,其中的相關的轉義字符將被替換
		2.非解釋字符串:該類字符串使用反引號括起來,支持換行

 字符串拼接方法
	1.s := s1 + s2
	2.strings.Join()
	3.bytes.Buffer

strings 和 strconv 包
	HasPrefix 判斷字符串 s 是否以 prefix 開頭:
	strings.HasPrefix(s, prefix string) bool

	HasSuffix 判斷字符串 s 是否以 suffix 結尾:
	strings.HasSuffix(s, suffix string) bool

	Contains 判斷字符串 s 是否包含 substr : 
	strings.Contains(s, substr string) bool

	Index 返回字符串 str 在字符串 s 中的索引(str 的第一個字符的索引),-1 表示字符串 s 不包含字符串 str:
	strings.Index(s, str string) int

	LastIndex 返回字符串 str 在字符串 s 中最後出現位置的索引(str 的第一個字符的索引),-1 表示字符串 s 不包含字符串 str
	strings.LastIndex(s, str string) int

	如果 ch 是非 ASCII 編碼的字符,建議使用以下函數來對字符進行定位:
	strings.IndexRune(s string, r rune) int

	Replace 用於將字符串 str 中的前 n 個字符串 old 替換爲字符串 new,並返回一個新的字符串,如果 n = -1 則替換所有字符串 old 爲字符串 new:
	strings.Replace(str, old, new, n) string

	Count 用於計算字符串 str 在字符串 s 中出現的非重疊次數:
	strings.Count(s, str string) int

	Repeat 用於重複 count 次字符串 s 並返回一個新的字符串:
	strings.Repeat(s, count int) string

	ToLower 將字符串中的 Unicode 字符全部轉換爲相應的小寫字符:
	strings.ToLower(s) string

	ToUpper 將字符串中的 Unicode 字符全部轉換爲相應的大寫字符:
	strings.ToUpper(s) string

	修剪字符串
	strings.TrimSpace(s)
	strings.Trim(s, "cut")
	TrimLeft 或者 TrimRight 

	分割字符串
	strings.Fields(s)
	strings.Split(s, sep)

	拼接 slice 到字符串
	strings.Join(sl []string, sep string) string

	從字符串中讀取內容
	strings.NewReader(str) 

	字符串與其它類型的轉換:
	與字符串相關的類型轉換都是通過 strconv 包實現的。
	strconv.Itoa(i int) string 返回數字 i 所表示的字符串類型的十進制數。
	strconv.FormatFloat(f float64, fmt byte, prec int, bitSize int) string 將 64 位浮點型的數字轉換爲字符串,
	其中 fmt 表示格式(其值可以是 'b'、'e'、'f' 或 'g'),prec 表示精度,bitSize 則使用 32 表示 float32,用 64 表示 float64。
	strconv.Atoi(s string) (i int, err error) 將字符串轉換爲 int 型。
	strconv.ParseFloat(s string, bitSize int) (f float64, err error) 將字符串轉換爲 float64 型。

11.指針
	不允許對指針進行運算

12.控制結構
	1.switch 
		多條件,  case var1,var2

	2.for
		基於條件判斷的迭代
			for i >= 0 {}
		
		無限循環
		 for { }

		for-range 結構



https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/04.6.md

https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/04.4.md

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章