V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
insert000
V2EX  ›  Go 编程语言

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

  •  
  •   insert000 · 2019-03-26 16:44:55 +08:00 · 3000 次点击
    这是一个创建于 2069 天前的主题,其中的信息可能已经有所发展或是发生改变。

    错误信息

    # 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",
    	})
    }
    
    第 1 条附言  ·  2019-03-26 19:00:40 +08:00
    golang v1.11 版本也能正常编译
    6 条回复    2019-03-29 14:30:06 +08:00
    leon0903
        1
    leon0903  
       2019-03-26 17:39:16 +08:00
    我觉得还是改名字吧。。。。HomeController, AdminController、
    insert000
        2
    insert000  
    OP
       2019-03-26 17:41:27 +08:00
    @leon0903 测试了一下,gin 框架下面,如果是不同包同名的 struct,方法名不同也可以运行。不知道是不是 gin 解析路由有什么特别的要求
    webluoye
        3
    webluoye  
       2019-03-26 17:44:05 +08:00
    逻辑上是不应该冲突的,都不在一个包了
    insert000
        4
    insert000  
    OP
       2019-03-26 18:04:49 +08:00
    @webluoye 嗯测试了 应该是 gin 哪里没用对,不用 gin 是可以的
    reus
        5
    reus  
       2019-03-27 16:19:30 +08:00
    编译器的 bug
    skiy
        6
    skiy  
       2019-03-29 14:30:06 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2712 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 06:05 · PVG 14:05 · LAX 22:05 · JFK 01:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.