我尝试使用Gin框架(用于Golang的框架)。
https://github.com/gin-gonic/gin
然后我从官方github复制了示例代码。
就像这样。
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
router := gin.Default()
router.GET("/user/:name", func(c *gin.Context) {
name := c.Param("name")
c.String(http.StatusOK, "Hello %s", name)
})
router.Run(":8080")
}
但是我得到了错误。
# go run main.go
# command-line-arguments ./main.go:12: c.Param undefined (type *gin.Context has no field or method Param)
有谁知道我该如何解决这个问题?
・ CentOS7
・ go版本go1.6.3 linux / amd64
我实际上使用了滑行,但我将杜松子酒更新为全局。并更新到1.7,但仍然出现相同的错误:
# go get -u -v github.com/gin-gonic/gin
github.com/gin-gonic/gin (download)
github.com/golang/protobuf (download)
Fetching https://gopkg.in/go-playground/validator.v8?go-get=1
https fetch failed: Get https://gopkg.in/go-playground/validator.v8?go-get=1: dial tcp: lookup gopkg.in on 192.168.11.1:53: dial udp 192.168.11.1:53: i/o timeout
gopkg.in/go-playground/validator.v8 (download)
Fetching https://gopkg.in/yaml.v2?go-get=1
https fetch failed: Get https://gopkg.in/yaml.v2?go-get=1: dial tcp: lookup gopkg.in on 192.168.11.1:53: dial udp 192.168.11.1:53: i/o timeout
gopkg.in/yaml.v2 (download)
github.com/manucorporat/sse (download)
Fetching https://golang.org/x/net/context?go-get=1
Parsing meta tags from https://golang.org/x/net/context?go-get=1 (status code 200)
get "golang.org/x/net/context": found meta tag main.metaImport{Prefix:"golang.org/x/net", VCS:"git", RepoRoot:"https://go.googlesource.com/net"} at https://golang.org/x/net/context?go-get=1
get "golang.org/x/net/context": verifying non-authoritative meta tag
Fetching https://golang.org/x/net?go-get=1
Parsing meta tags from https://golang.org/x/net?go-get=1 (status code 200)
golang.org/x/net (download)
# go version
go version go1.7 linux/amd64
# go run test.go
# command-line-arguments
./test.go:12: c.Param undefined (type *gin.Context has no field or method Param)
编辑:OP具有旧版本的软件包的“由Glide创建的供应商目录”。并通过删除该文件夹解决了问题(更新供应商软件包)。
注意:go get
请勿签出或更新存储在供应商目录中的代码。
c.Param(key)
是的快捷方式c.Params.ByName(key)
,请参阅c.Param(key)
文档:
// Param returns the value of the URL param. // It is a shortcut for c.Params.ByName(key) // router.GET("/user/:id", func(c *gin.Context) { // // a GET request to /user/john // id := c.Param("id") // id == "john" // }) func (c *Context) Param(key string) string { return c.Params.ByName(key) }
您需要更新 github.com/gin-gonic/gin
软件包,请尝试:
go get -u github.com/gin-gonic/gin
并确保没有任何vendor
,并尝试删除所有文件和供应商目录,除了main.go
然后go build
(或更新您的供应商包)。
您的代码在go1.7
以下方面运行良好:
package main
import (
"net/http"
"github.com/gin-gonic/gin"
)
func main() {
router := gin.Default()
router.GET("/user/:name", func(c *gin.Context) {
name := c.Param("name")
c.String(http.StatusOK, "Hello %s", name)
})
router.Run(":8080")
}
在浏览器中打开http://127.0.0.1:8080/user/World
输出:
Hello World
我发现这个错误:类型字符串的getText()方法未定义 怎么了? 这是代码: 我在最后2次对齐时得到错误。 以下是JtextArea的代码 以下是完整的代码:
我有一个将XML转换为PDF文档的要求,因为使用的是XSL - Apache FOP(Java)。我收到以下错误 请找到我的完整 JAVA 代码。 请找到我的依赖项:
正如代码所示,我想知道的是,在内存分配中,隐藏Base而不调用子的额外方法的实际情况是什么,它被调用了什么,有没有一种通过Base调用方法的方法。请帮忙
问题内容: 取自Android的想法:从对话框中模糊和暗化背景窗口。我无法使对话框下的内容模糊。当调用eula.getWindow()时,我收到此错误: 对于类型AlertDialog.Builder,未定义方法getWindow() 随同主要活动中的以下代码一起显示出eula: 任何帮助是极大的赞赏。 问题答案: 是对话框类的方法,而不是对话框生成器的方法。您的代码应该看起来像这样: 请注意,尽
在下,出现一条红线,表示:TouchActions TapObjectsSue类型的方法tap(TapOptions)未定义
我一直在做一个用Java编写国际象棋的项目。我有一个名为的抽象类,它有一个抽象方法和两个普通方法。每个棋子我都有一个类,它们都扩展了。 有一个类也代表棋盘,叫做。在这个类中,我有一个方法来检查给定位置的棋子是否属于另一个玩家。在这个方法中,我调用了一个来自类的方法,该方法获取名为的颜色。当我在一个棋子上调用这个方法时,它说“方法getColor()对于类型Piece是未定义的”,即使它是在类中创建