golang 包名不同,引入相同名称的结构体报错,找 golang 大佬指教

2019-03-26 16:44:55 +08:00
 insert000

错误信息

# github.com/study/gincms/router
duplicate "".(*IndexController).Index-fm.stkobj
<autogenerated>:1: symbol "".(*IndexController).Index-fm.stkobj listed multiple times

golang 版本

go version go1.12.1 windows/amd64

业务代码截图

package router

import (
	"github.com/study/gincms/controller/admin"
	"github.com/study/gincms/controller/home"
	"github.com/gin-gonic/gin"
)

/**
路由初始化
*/
func RouterInit() *gin.Engine {

	r := gin.Default()

	//前台 API 路由
	homeIndex := new(home.IndexController)
	r.GET("/", homeIndex.Index)
	homeUrl := r.Group("/home")
	{
		homeUrl.GET("/index/index", homeIndex.Index)
	}

	//后台 API 路由
	index := new(admin.IndexController)
	adminUrl := r.Group("/admin")
	{
		adminUrl.GET("/index/index", index.Index)
	}
	return r
}

controller

package admin

import (
	"net/http"
	"github.com/gin-gonic/gin"
)

type IndexController struct{}

func (this *IndexController) Index(ctx *gin.Context) {
	ctx.JSON( http.StatusOK, gin.H{
		"message": "111",
	})
}



package home

import (
	"net/http"
	"github.com/gin-gonic/gin"
)

type IndexController struct{}

func (this *IndexController) Index(ctx *gin.Context) {
	ctx.JSON( http.StatusOK, gin.H{
		"message": "2222",
	})
}
2856 次点击
所在节点    Go 编程语言
6 条回复
leon0903
2019-03-26 17:39:16 +08:00
我觉得还是改名字吧。。。。HomeController, AdminController、
insert000
2019-03-26 17:41:27 +08:00
@leon0903 测试了一下,gin 框架下面,如果是不同包同名的 struct,方法名不同也可以运行。不知道是不是 gin 解析路由有什么特别的要求
webluoye
2019-03-26 17:44:05 +08:00
逻辑上是不应该冲突的,都不在一个包了
insert000
2019-03-26 18:04:49 +08:00
@webluoye 嗯测试了 应该是 gin 哪里没用对,不用 gin 是可以的
reus
2019-03-27 16:19:30 +08:00
编译器的 bug
skiy
2019-03-29 14:30:06 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/548798

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX