一、windows環境搭建
一、安裝go
二、安裝goland開發工具包python
二、test.golinux
/* 可執行文件,包名必須是main */ package main /* fmt 字符串格式化的包 */ import "fmt" /*main入口函數*/ func main() { fmt.Printf("Hello, world" ) }
三、go函數定義windows
//go函數定義 func add(a int ,b int) int { var sum int //var表示變量,sum變量名稱,int表示變量類型 sum = a+b return sum }
四、go語言特性
一、垃圾回收
a、內存自動回收,不再須要開發人員管理內存
b、開發人員專一業務實現,下降了心智負擔
c、只須要new分配內存,不須要釋放
二、自然併發
a、從語言層面支持併發,很是揀單
b、goroute,輕量級線程、建立成千上萬個goroute成爲可能
c、基於CSP(Communicating Sequential Process)模型實現併發
案例:(使用關鍵字go)less
func test_print(a int) { fmt.Println(a) } for i:=0;i<100;i++{ go test_print(i) }
三、channel
a、管道,相似nuix/linux中的pipe
b、多個goroute之間經過channel進行通訊
c、支持任何類型ide
/*make關鍵字,分配內存空間*/ func main(){ pipe:=make(chan int ,3) //定義一個pipe變量,管道容量爲3,管道相似於隊列 pipe <- 1 //將1放入管道 pipe <- 2 fmt.Println("pipe長度:",len(pipe)) var t1 int t1 =<- pipe //從管道取值放入變量t1中 fmt.Println(t1) }
四、多返回值
a、一個函數返回多個值函數
func calc(a int ,b int ) (int ,int) { c:=a+b d:=(a+b)/2 return c,d }
五、包的概念(go語言不須要擔憂編碼問題,都默認爲utf8)
一、和python同樣,把相同的功能代碼放在一個目錄,稱之爲包
二、包能夠被其餘包引用
三、main包是用來生成執行文件,每一個程序只有一個main包
四、包的主要用途是提升代碼的可複用性工具
六、變量定義兩種方式
方式1:
var sum int //var表示變量,sum變量名稱,int表示變量類型
sum = 0
方式二:
sum:=0開發工具
七、函數多返回值 (注意佔位符"_"使用)ui
func calc(a int ,b int ) (int ,int) { c:=a+b d:=(a+b)/2 return c,d } func main1() { sum ,avg:=calc(200,300) fmt.Println("sum=",sum,",","avg=",avg) a ,_:=calc(200,300) //_表示不取返回值 fmt.Println("sum=",a,) }
FAQ:
問題1:
# command-line-arguments src\lesson-one\test.go:36: undefined: test_goroute 一個文件調用另外一個文件的函數,必須兩個文件都被編譯爲二進制文件,才能執行,不然報錯 爲了解決這種問題,能夠執行整個包