When I use gin to test, the port fails to start normally: [ERROR] listen tcp :8080: bind: address already in use enter image description here When I use the route to modify the port, it still shows that 8080 port is used


func main() {
  //r := gin.Default()
  //r.GET("/ping", func(c *gin.Context) {
  //  c.JSON(http.StatusOK, gin.H{
  //    "message": "pong",
  //  })
  //})
  router := gin.Default()
    router.GET("/hi", func(context *gin.Context) {
        context.String(http.StatusOK, "Hello world!")
    })
    err := router.Run()
    if err != nil {
        panic("[Error] failed to start Gin server due to: " + err.Error())
        return
    }
  router.Run(":9888")
  //r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
}

我应该如何修改它?

推荐答案

您正在调用Run()两次-第一个实例在没有提供任何地址的情况下被调用.因此,在本例中使用的是默认端口8080.更新代码以在第一个调用中提供地址,并删除重复的调用,有望为您解决这个问题.

func main() {
    router := gin.Default()
    router.GET("/hi", func(context *gin.Context) {
        context.String(http.StatusOK, "Hello world!")
    })
    err := router.Run(":9888")
    if err != nil {
        panic("[Error] failed to start Gin server due to: " + err.Error())
        return
    }
}

Go相关问答推荐

追加一个字节数组的分配比2个字节数组的分配要少得多

链自定义GRPC客户端拦截器/DialOptions

如何使用工作区方法扩展克隆的Golang库

Go源在Goland(IDEA)中以灰色显示.什么意思?我怎么才能让它恢复正常?

确定果朗CSV行中的字节数

从 wincrypt API 到 Go 的 RC2 解密

在 go 中,将接收器 struct 从值更改为指针是否向后兼容?

如何从 Go 中的 `HijackedResponse` 中删除 Cursor Position ANSI 转义码?

通过环境变量配置 OTLP 导出器

致命错误:找不到由 zergon321/reisen 引起的libavcodec/avcodec.h文件

如何使用 Go 获取 X11 中的窗口列表

在我的情况下,如何以正确的方式测试方法?

如何在 Golang 中使用具有相同名称或特定关键字的行或列重新排列/排序 CSV

将接口方法的参数限制为几个允许的 struct ?

无限期运行 Go routine (完成后重新启动)

退格字符在围棋操场中不起作用

为什么在 goroutine 中声明时,benbjohnson/clock 模拟计时器不执行?

Go:为一组单个结果实现 ManyDecode

Go generics:我会在哪里使用 any 而不是 interface{}?

如何在程序退出时使用 golang 删除文件?