筆者在這邊使用mac示範如何在mac上操作go的專案
brew install go
測試看看go有沒有安裝成功
$ go version
go version go1.19 darwin/amd64
我們來建立我們第一個專案資料夾youtube,然後在建立我們的第一個服務 login,並在裡面建立一個檔案叫做main.go
Desktop/youtube
├── login
├── main.go
// main.go
package main
import (
"log"
"net/http"
)
func main() {
http.HandleFunc("/", test)
// test teee tttsdsds
err := http.ListenAndServe(":8888", nil)
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
}
func test(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK)
w.Write([]byte(`my first website`))
}
檔案新增好了之後,輸入指令
$ go run main.go
然後在瀏覽器開 http://localhost:8888/ ,看看是不是出現跟我一樣的畫面
GO的細節再請讀者自己了解,我這邊會直接貼code快速講過。我們將使用gin的web框架來進行開發。使用 go get能夠將 gin
安裝到自己的 package
當中。package
的位置通常會在GOROOT的後方建立資料夾pkg。GOROOT的位置可以使用go env查看。舉例來說,我跑了一個 go get gin的指令
go get github.com/gin-gonic/gin
他會自動安裝到 GOROOT/pkg內。然後我在專案的檔案中引入gin
import (
"github.com/gin-gonic/gin"
"net/http"
)
當我運行的時候,就會自動去GOROOT裡面找到pkg做打包並運行
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func returnJson(c *gin.Context) {
m := map[string]string{"status": "200"}
j, _ := json.Marshal(m)
c.Data(http.StatusOK, "application/json", j)
}
func returnJson2(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"status": "200",
})
}
func main() {
server := gin.Default()
server.LoadHTMLGlob("template/*")
server.GET("/", returnJson)
server.GET("/test", returnJson2)
server.Run(":8888")
}
現在,我們就有了可以跟據route跑結果的服務了。GO專案先到這邊,我們隔天來講container