使用Markfile開發GO程式

2022-01-30 21:34:38 字數 1190 閱讀 2021

makefile是用於構建和執行軟體應用程式的自動化工具。

首先,我們建立乙個go應用程式

package main

import "fmt"

func main()

build:

go build -o bin/main main.go

run:

go run main.go

compile:

# 32-bit systems

# freebds

goos=freebsd goarch=386 go build -o bin/main-freebsd-386 main.go

# macos

goos=darwin goarch=386 go build -o bin/main-darwin-386 main.go

# linux

goos=linux goarch=386 go build -o bin/main-linux-386 main.go

# windows

goos=windows goarch=386 go build -o bin/main-windows-386 main.go

# 64-bit

# freebds

goos=freebsd goarch=amd64 go build -o bin/main-freebsd-amd64 main.go

# macos

goos=darwin goarch=amd64 go build -o bin/main-darwin-amd64 main.go

# linux

goos=linux goarch=amd64 go build -o bin/main-linux-amd64 main.go

# windows

goos=windows goarch=amd64 go build -o bin/main-windows-amd64 main.go

為我們的平台構建go應用程式

make build
執行go應用程式

make run
為了針對不同的平台和作業系統編譯go 應用程式

make compile
跟我一起寫makefile

go 協程等待

sync包提供了基本的同步基元,如互斥鎖 但是這裡不是討論執行緒通訊的問題 而執行緒通訊應使用channel 以前使用time.sleep 來保證執行緒執行完成,顯然執行緒執行所需要的時間不確定 sync裡面有乙個waitgroup,它是乙個結構體,可以用於等待執行緒執行 這樣不用去估算執行緒需要執...

協作式go程

考慮如下開發框架,一組網路接收goroutine接收網路包,解包,然後將邏輯包推送到訊息佇列,由乙個單一的邏輯處理goroutine負責從佇列中提取邏輯包並處理 這樣主處理邏輯中基本上不用考慮多執行緒競爭的鎖問題了 如果邏輯包的處理涉及到呼叫可能會阻塞的函式呼叫怎麼辦,如果在處理函式中直接呼叫這樣的...

Go 協程 通道

目錄 go 協程 go 通道 go 協程go 協程可以看作是輕量級執行緒。與執行緒相比,建立乙個go協程的成本很小。因此在go應用中,常常會看到有數以千計的go協程併發地執行 go 協程相比於執行緒的優勢 啟動乙個go協程 在呼叫函式和方法時,在前面加上關鍵字go,可以讓乙個新的go協程併發執行 p...