go語言,Let s go(golang)(一)

2022-08-05 17:48:14 字數 1521 閱讀 2802

我認為go語言是一個不但易學易用,而且非常強大的語言,是一個非常值得投資的語言。

goroot環境變數,指向go語言的安裝目錄

gopath環境變數,指向自己的工作區,這個目錄下應該包含bin,pkg,src分別放置可執行檔案,庫檔案,源**

推薦使用vscode,跨linux,win,mac平臺,另外go語言也能完美的執行在這3個平臺上,可以簡單的實現跨平臺開發。vscode上還有一整套go語言的輔助工具,包括非常實用的**提示工具等

來吧,開始第一個程式

package main

import (

"fmt"

"sync"

)func main() ()

wg.wait()

fmt.println("program terminated")

}

go語言的hello world,就是這麼直接

第一行

package main
這表示該程式所屬的包為main包,所有go源**都必須被包含在指定的包中,但是main包是很特殊的,go會將這個包中的**構建成可執行程式,而其他名字的包會被構建成庫

import (

"fmt"

"sync"

)

顧名思義,匯入包,fmt和sync都是go語言“標準庫”中的包,分別用來處理格式化輸出和同步操作,go語言的“標準庫”非常龐大,功能全面,隨著學習的深入,我們還會接觸到很多其他的包

var hw = "hello go programming language"

var wg sync.waitgroup

這兩行宣告瞭2個變數,可以看到,go語言宣告變數是非常簡潔的,編譯器會幫我們判斷變數的型別,而go語言和c++,c#語言一樣,變數必須有型別。wg變數相信寫過多執行緒程式的朋友應該一看就知道他的意義,簡單來講,就是等待“特定條件”達成,在這裡,就是等待所有goroutine結束,goroutine又是什麼呢?goroutine是go語言在語言層面支援併發的一種功能,合理使用goroutine可以方便快捷的進行多執行緒程式開發。

wg.add(1)

go func() ()

wg.wait()

在上面的**的第二行,我們就啟動了一個goroutine去執行我們指定的一個匿名函式,在啟動前,我們對wg進行了add(1)操作,表示有一個goroutine在執行中,在最後執行wg.wait()表示主執行緒要等待所有的goroutine執行完成才能結束程式,匿名函式中,我們不但輸出了hw變數中的內容,而且在最後執行了wg.done()告訴主執行緒,我的事情都搞定了,不用等了。

如果我們的程式中不包含wg,則有可能因為主執行緒過快結束導致無法在goroutine中輸出hw的值,這是go語言中多執行緒同步的一種方式。

將**複製到main.go檔案中,放到gopath的src目錄下的foo資料夾中,並在powershell中執行go install foo,我們的程式就會生成到bin目錄下了,執行一下看看吧

D Let s Go Hiking

codeforces round 706 div 2 首先保證x落點峰頂 然後討論最長上升或下降那一段的情況 否則,y走比x長的段就能贏 討論升降長度相等 不等 各自的奇數長度 偶數長度的情況 發現只有最長升降那段,升長等於降長且長度都為奇數才能輸出1 其他情況輸出0 討論結束 賽後才會做, 明天上...

設計模式,Let s “Go”! 下

接上篇 設計模式,let s go ! 中 , 繼續更新設計模式,今天介紹的設計模式有責任鏈模式 蠅量模式 直譯器模式 中介者模式 備忘錄模...

設計模式,Let s “Go”! 中

接上篇 設計模式,let s go ! 上 , 繼續更新設計模式,今天介紹的設計模式有模板模式 迭代器模式 組合模式 狀態模式 模式 橋接模...