注意:這些「坑」不是bug,只是本身當時沒搞明白。php
用到的框架爲 Beegohtml
一、字典 map 是「引用類型」,自己就是指針,做爲參數傳遞時,直接傳 map 變量名便可(不要傳 map 變量指針)。golang
在調用方法內,若是修改了 map 變量值,外部的 map 變量值也會被改變的!框架
例如 Beego 控制器屬性 Data,若是 其餘的地方須要用到這個變量,直接傳入 Data 變量名便可,參考代碼以下:spa
# 控制器內代碼 #設計
// 預處理 func (c *PassportController) Prepare() { // 覈對 用戶會話狀態(是否已登陸) res := passportService.ManagerCheckLoginSession(c.Ctx, c.Data) println(res.Msg) }
# 調用到的方法 #指針
func (s *PassportService) ManagerCheckLoginSession(Ctx *context.Context, Data map[interface{}]interface{}) *beego.Result { // ...代碼省略 }
二、go 文件 不能以「_」爲前綴,不然 go 底層會忽略它的存在(即文件不起做用,裏面的代碼也就不起做用)code
如:_templatefunc.go 這個文件是無效的htm
三、編譯時報錯:import cycle not allowedblog
Golang 不容許循環導包,不然,會在編譯時報錯,一般是由於設計錯誤 或 包的規劃有問題,例如
import( "package A" "package B" )
若是 package A 中已經導入 package B,而本 package A 中又導入 package B
或者 package A 依賴package B,同時 package B 依賴 package A
這樣就會在編譯時報 "import cycle not allowed"。
如何避免重複導入包的問題,就須要在設計時規劃好包。
詳細查看:http://ju.outofmemory.cn/entry/230115
四、被 局部變量
覆蓋
[薦][容易出錯] Golang 局部變量 初始化 := 的陷阱