mux.Vars()只在路由中匹配时填充(所以gorillamux知道在哪里查找它们)。路由中的匹配是通过在路由中需要变量值的地方使用{name}或{name:pattern}占位符来完成的。 因此,对于以下路线: r.HandleFunc("/articles/{category}/{id:[0-9]+}", ArticleHandler) 您可以将vars键category和id设置为各自的值: vars := mux.Vars(r)fmt.Fprintf(w, "Category: %v\n", vars["category"])fmt.Fprintf(w, "Id: %v\n", vars["id"]) 在您的代码中,您可以这样修复/peoplebyid(取决于id是什么),以使GetPeopleById()处理程序正常工作: func (h HandlerProvider) GetRouter() *mux.Router {// ...r.HandleFunc("/people/{id:[0-9]+}", GetPeopleByID).Methods("GET")// ...} 请参阅Gorilla Mux文档,了解如何使用VAR:https://github.com/gorilla/mux#examples,特别是以下部分开头的部分: 路径可以有变量。它们是使用格式{n