前言:編程
整理一下學習 Go 語言的筆記,做爲一名老程序,學習一名新的開發語言天然不須要像小白那樣從 HelloWorld 看起。閉包
簡單整理一下 Go 的一些差別處,但願對你們學習 go 有點幫助,不正確的地方還請指教!函數
1、環境搭建:學習
博客園不少教程,自行解決,推薦使用 VS Code 綠燈 + 插件的方式,簡單粗暴好用spa
2、第一課筆記整理:插件
基礎語法:
// --------------------------------------- 變量聲明code
var [名稱] [類型] var name string // 自動推導類型 [名稱] := [值] name := "" // 類型轉換 str := "666" var i = 0 i = (int)str
// --------------------------------------- range 迭代器blog
str := "abc" for i, data := range str { // data 可省略 fmt.Println(i, data) }
// --------------------------------------- 函數定義教程
// 函數名首字母小寫即爲 private,大寫即爲 public func [函數名](形參) (返回值) { // 方法體 return 參數1, 參數2 }
// 不定參數類型(切片) func [函數名](args ...string)(返回值) { // .... } // 匿名變量 num1, _ := Func()
// --------------------------------------- 回調函數(多態)開發
// --------------------------------------- 匿名函數與閉包
func main() { a := 10 f1 := func() { // 閉包是以引用的方式捕獲外部變量 // print(a) } f1() // 給一個函數類型起別名 type FuncType func() var f2 FuncType f2 = f1 f2() // 定義匿名函數,同時調用 func() { // .. }() // 後面的()表明調用此匿名函數 // 帶參數同理 }
// --------------------------------------- 閉包的特色(裝逼用法)
// --------------------------------------- defer 關鍵字做用(延緩調用,相似析構函數)
方法體類,執行結束後執行,經常使用一些關閉鏈接、關閉 IO 等操做 注意: 1、多個 defer 狀況下,是先進後出的順序 2、defer 能夠用與匿名函數的調用,如:defer func () { ... }
// --------------------------------------- 工程管理
1、分文件編程(多個源文件) 2、設置 GOPATH 環境變量 3、同目錄必須包名一致 4、go env 查看相關環境路徑 5、同一目錄,直接調用文件函數便可,無需包名 // 包引用 import ( // 默認不調用 init 方法 _"fmt" )
// --------------------------------------- 工程管理
if 變量名:a, a < 10 { // ... }