今天看書總結了一些go的小知識點java
1.條件判斷裏面的變量其餘地方沒法訪問程序員
2.使用'_'處理不須要的返回值數據庫
3.go能夠返回多個返回值數組
4.go不能像java同樣拋出異常, go中使用panic 和recover機制cookie
5.go中的struct若是存在匿名的struct字段,那麼匿名的struct的全部字段都將被隱士的引入到當前的struct中網絡
6.go中經常使用的關鍵字:session
- var和const語言基礎裏面的變量和常量申明
- package和import定義所在的包以及導入的包
- func 用於定義函數和方法,若是是方法前面加上結構體
- return 用於從函數返回
- defer 用於相似析構函數,延遲執行
- go 用於併發,goroutine的實現
- select 用於選擇不一樣類型的通信,阻塞型的
- interface 用於定義接口
- struct 用於定義抽象數據類型
- break、case、continue、for、fallthrough、else、if、switch、goto、default
- chan用於channel通信
- type用於聲明自定義類型
- map用於聲明map類型數據
- range用於讀取slice、map、channel數據
7.go沒有提供數據庫的驅動,可是提供了開發數據庫驅動的標準接口併發
8.網絡相關,cookie是存在客戶端的請求相關的數據,session是保持在服務端的數據,go建立一個全局的session管理器,經過TcpDial建立一個tcp連接tcp
我以爲go中對於java程序員比較難理解的就是struct匿名中匿名變量了,特別是包括函數的interface.goroutine對於java的程序員是一個全新的東西.函數
2019-2-18 更新
【go垃圾回收】
go的垃圾回收機制是根據該變量經過指針或者引用訪問路徑遍歷,是否能夠找到該變量。若是不竄中這樣的訪問路徑,那麼說明該變量不可達。由於一個變量的有效週期只取決因而否可達,所以一個循環迭代內部的局部變量的生命週期可能超出其局部做用域。同時,局部變量可能只函數返回以後仍然存在。
go中數組定義:在數組字面值中,若是在數組的長度位置出現的是「...」省略號,則表示數組的長度是根據初始化值的個數來計算
【slice】
1.和數組不同的是slice不能進行比較,不能使用「==」判斷兩個slice是否相等。字節型的slice可使用bytes.Equel進行比較,其餘類型只能逐個比較了
2.測試一個slice是否爲空,不能使用nil進行判斷,須要用len(s) == 0進行判斷
【map】
1.map中的key必須支持運算符「==」
2.禁止對map的元素取址,不能取址是由於,隨着元素數量的增長,可能會分配更大的內存空間,而致使以前的地址失效
【init過程】
1.在同一個package中,能夠多個文件中定義init方法
2.在同一個go文件中,能夠重複定義init方法
3.在同一個package中,不一樣文件中的init方法的執行順序按文件名前後順序決定
4.在同一個文件中的多個init方法,按照在代碼中編寫順序執行init方法