introduction
用來自定義複雜的數據結構,亦為一種自定義的類型(與golang自帶的int,string,map類型等價)
struct可以包含多個字段,或稱屬性
struct類型可以定義方法,須注意和函數的區分
struct類型屬於值類型,因此要修改struct中的值,必須傳入指針
struct之間可以嵌套,自定義的struct中可再包含其他struct類型
Golang中沒有class類型,只有struct類型
可將struct類型當作class類型使用
Go初識-day12-map類型(key-value pair)
introductionkey-value的數據結構,又名關聯數組或是hash table在python中被稱為字典(dictionary)
map本身是無序的
map的key是唯一的
map為引用類型
Go初識-day11-切片
introduction定義:切片為陣列的引用,因此切片為引用類型
切片本身並不會單獨存在,切片的底層就是陣列
切片的長度可以改變,可將切片視為可變陣列
切片的遍歷方式與陣列一樣
切片長度與陣列一樣可用len函數取得
cap函數可以求出切片的容量,0 ≦ len(array) ≦ cap(slice)
array是指被引用的陣列
Go初識-day11-排序與查找
introductionGo語言本身已有內置的官方package可無痛實現排序功能
位於sort包,導入即可使用
網址:https://golang.org/pkg/sort/
Go初識-day10-陣列(Array)
introduction定義:有固定長度且裏頭的每個元素都為同一種數據類型之序列
陣列屬於值類型
長度是陣列類型的一部分,不同長度的陣列即使內部元素類型相同,仍為不同類型例如:
12var a [5]intvar b [10]int
a,b兩變量為不同類型,因此也不能比較
陣列的index皆為0開始,最後一個元素的index為len-1
如果訪問的index在陣列合法範圍之外,會觸發訪問越界,丟出panic
Go初識-day10-閉包(closure)
introduction閉包可以用來在一個函式與一組「私有」變數之間建立關聯關係。在給定函式被多次呼叫的過程中,這些私有變數能夠保持其永續性。變數的作用域僅限於包含它們的函式,因此無法從其它程式代碼部分進行存取。不過,變數的生存期是可以很長,在一次函式呼叫期間所建立所生成的值在下次函式呼叫時仍然存在
一個函數和與其相關的引用環境組合而成的實體
Go初識-day9-內置函數
內置函數內置函數可以直接使用,且不需要導入特定的package
close: 主要用來關閉channel
len: 用來求長度,比如sting,array,slice,map,channel
new: 用來分配內存,主要用來分配值類型,比如int,struct等基本類型,返回的是指針(注意!!)
make: 用來分配內存,主要用來分配引用類型,比如channel,map,slice等
append:用來追加元素到slice中
panic和recover: 用來作錯誤處理
Go初識-day9-遞歸函數
introduction一個函數調用了自己,就叫做遞歸
設計原則
一個大問題可拆分出多個邏輯相同的子問題
且問題的規模會不斷的縮小,最後收斂
定義好出口條件
若沒有定義好出口條件,會造成死循環