1、windows環境搭建
1、安裝go
2、安裝goland開發工具包
2、test.go


/* 可執行文件,包名必須是main */ package main /* fmt 字符串格式化的包 */ import "fmt"/*main入口函數*/ func main() { fmt.Printf("Hello, world" )}
3、go函數定義


//go函數定義 func add(a int ,b int) int { var sum int //var表示變量,sum變量名稱,int表示變量類型 sum = a+b return sum }
4、go語言特性
1、垃圾回收
a、內存自動回收,再也不需要開發人員管理內存
b、開發人員專注業務實現,降低了心智負擔
c、只需要new分配內存,不需要釋放
2、天然并發
a、從語言層面支持并發,非常揀單
b、goroute,輕量級線程、創建成千上萬個goroute成為可能
c、基于CSP(Communicating Sequential Process)模型實現
案例:(使用關鍵字go)
func test_print(a int) {fmt.Println(a)}for i:=0;i<100;i++{go test_print(i)}
3、channel
a、管道,類似nuix/linux中的pipe
b、多個goroute之間通過channel進行通信
c、支持任何類型
/*make關鍵字,分配內存空間*/func main(){pipe:=make(chan int ,3) //定義一個pipe變量,管道容量為3,管道類似于隊列pipe <- 1 //將1放入管道pipe <- 2fmt.Println("pipe長度:",len(pipe))var t1 intt1 =<- pipe //從管道取值放入變量t1中fmt.Println(t1)}
4、多返回值
a、一個函數返回多個值
func calc(a int ,b int ) (int ,int) {c:=a+bd:=(a+b)/2return c,d}
5、包的概念(go語言不需要擔心編碼問題,都默認為utf8)
1、和python一樣,把相同的功能代碼放在一個目錄,稱之為包
2、包可以被其他包引用
3、main包是用來生成執行文件,每個程序只有一個main包
4、包的主要用途是提高代碼的可復用性
6、變量定義兩種方式
方式1:
var sum int //var表示變量,sum變量名稱,int表示變量類型
sum = 0
方式二:
sum:=0
7、函數多返回值? ?(注意占位符"_"使用)
func calc(a int ,b int ) (int ,int) {c:=a+bd:=(a+b)/2return 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一個文件調用另一個文件的函數,必須兩個文件都被編譯為二進制文件,才能執行,否則報錯 為了解決這種問題,可以執行整個包
?