寶慕林4294392
2021-10-25 18:24:06
當(dāng)我嘗試編譯此代碼時:package mainimport ( "encoding/json" "fmt" "net/http")func main() { fmt.Println("Hello, playground")}const ( GET = "GET" POST = "POST" PUT = "PUT" DELETE = "DELETE")type Route struct { Name string `json:"name"` Method string `json:"method"` Pattern string `json:"pattern"` HandlerFunc http.HandlerFunc `json:"-"`}type Routes []Routevar routes = Routes{ Route{ Name: "GetRoutes", Method: GET, Pattern: "/routes", HandlerFunc: GetRoutes, },}func GetRoutes(res http.ResponseWriter, req *http.Request) { if err := json.NewEncoder(res).Encode(routes); err != nil { panic(err) }}Playground編譯器返回此錯誤消息:main.go:36: initialization loop: main.go:36 routes refers to main.go:38 GetRoutes refers to main.go:36 routes此代碼的目標(biāo)是當(dāng)客戶端應(yīng)用程序?qū)?routes路由執(zhí)行 GET 請求時,以 JSON 形式返回我的 API 的所有路由。關(guān)于如何找到解決此問題的干凈方法的任何想法?
2 回答

慕斯709654
TA貢獻1840條經(jīng)驗 獲得超5個贊
稍后在init(). 這將使GetRoutes函數(shù)首先被初始化,然后它可以被分配。
type Routes []Route
var routes Routes
func init() {
routes = Routes{
Route{
Name: "GetRoutes",
Method: GET,
Pattern: "/routes",
HandlerFunc: GetRoutes,
},
}
}

慕哥9229398
TA貢獻1877條經(jīng)驗 獲得超6個贊
使用init:
var routes Routes
func init() {
routes = Routes{
Route{
Name: "GetRoutes",
Method: GET,
Pattern: "/routes",
HandlerFunc: GetRoutes,
},
}
}
- 2 回答
- 0 關(guān)注
- 165 瀏覽
添加回答
舉報
0/150
提交
取消