每一個專案都需要一個入口,才能讓專案運行起來,前面章節我們提到了main目錄為入口目錄,main()為golang的入口函式,因此,我們在main目錄下創建一個main.go檔案來作為入口檔案,在里面撰寫main()函式,
小試身手
package main
import "fmt"
func main() {
fmt.Println("Hello World")
}
這里簡單的輸出了Hello World到控制臺中,我們先試一下運行它,看能不能得到Hello World的結果,
運行測驗是非常簡單的,在前期我們做好準備后,在main()函式前會有一個實心綠色三角形,點擊它,并選擇第一個選單來運行

運行后,將在控制臺中看到輸出的執行結果:

很好,我們已經成功將go跑起來了,以后,它將作為我們的博客專案入口,從這里開始運行代碼,
單單一個hello world 當然是無法滿足我們的專案要求的,我們可是有一堆需求等著實作呢,這里,我們重寫一下main()函式,讓他滿足我們的需求,
iris 的使用
iris目前有2個版本,我們選擇使用iris12版本,
bootstrap.go
首先,我們在根目錄創建一個bootstrap.go檔案,將iris的邏輯代碼放在這個檔案里,
整個檔案的代碼如下:
package irisweb
import (
"context"
"fmt"
"github.com/kataras/iris/v12"
)
type Bootstrap struct {
Application *iris.Application
Port int
LoggerLevel string
}
func New(port int, loggerLevel string) *Bootstrap {
var bootstrap Bootstrap
bootstrap.Application = iris.New()
bootstrap.Port = port
bootstrap.LoggerLevel = loggerLevel
return &bootstrap
}
func (bootstrap *Bootstrap) Serve() {
bootstrap.Application.Logger().SetLevel(bootstrap.LoggerLevel)
bootstrap.Application.Get("/", func(ctx iris.Context) {
ctx.WriteString("Hello World")
})
bootstrap.Application.Run(
iris.Addr(fmt.Sprintf("127.0.0.1:%d", bootstrap.Port)),
iris.WithoutServerError(iris.ErrServerClosed),
iris.WithoutBodyConsumptionOnUnmarshal,
)
}
整個檔案比較簡單:
- 一個Bootstrap 的結構體,用來存放iris的物件、tcp埠和日志記錄級別資訊,
- 一個New 函式,用來初始化iris,以及埠賦值、日志記錄級別賦值等,
- 還有一個函式是iris啟動服務函式,里面開始對iris運行進行初始化資訊設定,這些配置資訊在由存放在config.json中的資訊得來,
bootstrap.Application.Get("/", func(ctx iris.Context) {
ctx.WriteString("Hello World")
})
這一句定義一個訪問路由,匿名函式是訪問這個路由的時候,會執行的函式,iris的路由配置有多種形式,支持Get/Post/Put/Delete,還支持Party對路由進行分組,
bootstrap.Application.Run(
iris.Addr(fmt.Sprintf("127.0.0.1:%d", bootstrap.Port)),
iris.WithoutServerError(iris.ErrServerClosed),
iris.WithoutBodyConsumptionOnUnmarshal,
)
這一部分的代碼是使用iris鑒定指定的埠,埠就是我們在config.json中定義的埠,除了設定埠外,這里還支持增加其他配置項,比如 WithoutServerError 會忽略errors錯誤,WithoutBodyConsumptionOnUnmarshal 運行iris的body可以多次消費,也就是說,你在中間件中使用了body,在后續的處理函式中,還可以再次使用body,如果不設定這個配置項,body就只能使用一次,再次使用就得不到內容,
main.go
上面已經寫好了iris的邏輯代碼,我們還需要將它放到main.go 中,才能讓代碼跑起來,于是,我們將前面寫的的hello world刪掉,我們將main.go重寫下:
package main
import (
"irisweb"
"irisweb/config"
)
func main() {
b := irisweb.New(config.ServerConfig.Port, config.ServerConfig.LogLevel)
b.Serve()
}
代碼如上,這回的內容輸出就不是在控制臺了,現在的內容輸出就變成了在瀏覽器輸出了,來我們一起試一下,點擊main.go 函式左邊的綠色實心三角形,運行起來看看預期結果,
運行了之后,在瀏覽器輸入 http://127.0.0.1:8001 訪問,這里的8001埠是config.json設定的埠,如果你設定的埠不是8001,請改成你設定的埠,如果不出意外,你將看到如下的輸出內容:

恭喜你,你的配置已經成功,僅僅在瀏覽器中輸出hello world,當然是不能滿足我們的需求的,下一節我們將再跟進我們的需求檔案,來繼續完善我們的博客網站,我們再對bootstrap.go 進行改造,
完整的專案示例代碼托管在GitHub上,需要查看完整的專案代碼可以到github.com/fesiong/goblog 上查看,也可以直接fork一份來在上面做修改,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/233041.html
標籤:區塊鏈
上一篇:數字化轉型,實施重心在IT之外
