1.模板引入時報錯:
func main() { router := gin.Default() router.LoadHTMLGlob("templates/**/*") router.GET("/posts/index", func(c *gin.Context) { c.HTML(http.StatusOK, "posts/index.tmpl", gin.H{ "title": "Posts", }) }) router.GET("/users/index", func(c *gin.Context) { c.HTML(http.StatusOK, "users/index.tmpl", gin.H{ "title": "Users", }) }) router.Run(":8080") }
// 需要去掉 / posts 和 users ,標記紅色的字符串去掉就正常了
按照官網寫法,https://gin-gonic.com/zh-cn/docs/examples/html-rendering/
發現出現報錯:html/template: "post/index.tmpl" is undefined
如果非要按照官方文檔,請注意模板文件開頭一定要定義
{{ define "posts/index.tmpl" }} <html><h1> {{ .title }} </h1> <p>Using posts/index.tmpl</p> </html> {{ end }}
下載:
go get github.com/jinzhu/gorm
go get github.com/go-sql-driver/mysql
這樣的庫比較慢時,呵呵呵,等着吧,只要不自動失敗就行,最后一般能下載成功的。。。
項目依賴包最好放在項目目錄下:否則
- 每一個新來的人都要
go get
很多次 - 拉下來的版本還可能不一樣
- 線上部署更麻煩了
可在項目其他目錄書寫包文件,然后在其他目錄引入這個包,調用時默認時包 package name
包里的init方法 可以初始化包
多個文件可以定義為同一個包名, 同一個包下,變量可以公用。
model 定義表結構體時,加入
gorm.Model
新增數據時會自動維護表的 created_at 和 updated_at 字段
init函數在你導入該package時程序會自動調用init函數
在剛接觸GO語言時候,我相信你也會有這種困惑,為什么有的函數名前面有輸入參數,而一些卻沒有,它們是否有差別?確實有差別,沒有輸入參數,是一般的函數;
有輸入參數,是結構的方法,輸入參數叫做“方法接收者”!GO語言沒有類,方法都定義在結構上了!!
參考鏈接:https://www.codetd.com/article/6771261
go get XXX 下載的包,默認會安裝在GOPATH 的第一個路徑里。