Go 學習筆記(6): 寫一個網頁吧!

我自己是PHP 後端工程師,常常在寫網頁、常碰Javascript , html , css 等等,所以,在學這個Go的過程當中,也來學習用go寫一個網頁吧! Go 與網頁常常有用到的一個套件就叫做 net/http , 他同時也可以做網頁的爬蟲,等等讓我娓娓道來~ 網頁版HelloWorld ! 1package main 2import ( 3 "log" 4 "net/http" 5) 6 7func viewHandler(writer http.ResponseWriter, request *http.Request){ 8 message := []byte("Hello …

Go 學習筆記(5): 非同步

學習Go 也到了一段時間了,來學習這個部分:多執行緒 如同我之前寫道其實如果要做很大量的東西應該要用非同步的方式… 在Go裡面,並發被叫做「Goroutine」,在深入淺出Go 這本書的定義:提供並發,暫停一個工作以啟動另一個工作。而且在有些情境下他們允許並行,同時執行不同的工作 如果你想要用goroutine 其實就在function 前面加一個go 的關鍵字 1func main(){ 2 go a() 3 go b() 4} 然而,由於我們使用到這個非同步的概念,所以我們無法期待method 可以馬上回傳結果,那是Go 去控制工作的進行與安排,所以Go裡面便多了一個概念:Channels,其實就加一個chan 這 …

Go 學習筆記(4) – 檔案

寫程式難免都需要與檔案做互動, 甚者還需要與資料庫溝通。這篇文章將紀錄Go 怎麼與檔案互動的部分…… 首先是讀取檔案! 1package main 2 3import ( 4 "bufio" 5 "os" 6 "fmt" 7) 8 9func main(){ 10 var numbers []string 11 file ,_ := os.Open("input.txt") // 使用open 開啟檔案 12 scanner := bufio.NewScanner(file) // 必須建立Scanner 這裡讓我有點想起C 13 for …

Go 學習筆記(3): 做套件給別人用

來到學習Go 的第三篇文章,在深入淺出Go 裡面有介紹套件的開發方式,要把他放到GOPath 裡面… 不過,那好像是很久以前Go的版本了… 現在,出現了go.mod 和 go.sum , 似乎就沒有那麼麻煩… 這裡簡介簡單兩個指令: go mod init {package name} 這個指令會建立go.mod 的檔案 go mod tidy 這個指令會去找你目前寫的go 檔案所引用的package, 去修改go.mod go.mod 有點像是composer.json 和 package.json 記錄著目前所引用的package 而 go.sum 是個天書, …

Go學習筆記(2): make a game

來到學習Go 的第二篇文章了,來學習一些控制流以及一些基礎東西吧! 條件式 在 Golang 寫條件式很簡單,就是寫個if 加個大括號就好 1// 這裡請記得 "{" 和 if 要同一行,之前自由慣了常常被這件事情雷到! 2if true { 3 // ...... 4} else if false { 5 // ..... 6} 7 8// 或者你可以使用 if 更短的初始化陳述句 9if count := 5; count>4 { 10 fmt.Println("count is ",count) 11} 另外有一個比較特別的是,if 區塊裡面的區域變數(使用到:=)是不能使用在if 外面的 …

Go學習筆記(1): HelloWorld

在之前寫到今年的計劃 當中,我就說到我想要學Go 語言。同時我自己也買了一本有關於Go 的書:深入淺出Go , 希望藉此督促自己有個比較完整性的學習…… 以下是我讀這本書以及學習的心得與筆記,可能有點無聊,高手請跳過、不過如果有看到錯的也請不吝指正! 首先,你要先去安裝好Go……. 程式組成 Go 語言的組成通常有三個部分: 套件子句(package main) import 相關陳述句 (import "fmt") 主要的程式碼 (func main(){......}) Hello World 程式! 讓我們先建立一個名為hello.go 的檔 …