Go: "instance"在此 block 中重新声明

标签 go

我有这两个文件:

daoFactory.go

package dao

import "sync"

type daoFactory struct {}

var instance *daoFactory

//some functions

fakeProvisionDao.go

package dao

import (
    "sync"
    "model"
)

type provisionDao struct {
}

var instance *provisionDao

//some functions

两者都在同一个包中:dao

我收到这个错误:

"instance" redeclared in this block

很明显,原因是 instance 变量在两个文件中都被声明了。我刚开始学习 Go 编程,我不知道该如何处理这个错误。

最佳答案

文件对于 go 没有实际意义,与 java、python 和许多其他语言不同,它们只是让您按照自己认为合适的方式组织代码。

在 go 中,变量在 package 范围内可见,这意味着 instance 的两个声明都是在包范围内可见的变量。因此,编译器会提示有两个同名的全局变量。

重命名两个实例变量中的任何一个,它将编译。

强烈推荐阅读上面评论中的链接 ;-)

关于Go: "instance"在此 block 中重新声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34344172/

相关文章:

go - 为什么在 imagemagick 中 readimage 和 writeimage 对 PNG 图片需要很多时间?

go - 为什么 go panic recover to return value with local variable 不起作用?

json - 取消具有可变数量的相似字段的 JSON 对象

CGO : use typedef struct in preamble

file - os.File、io.Reader 和 os.Stdin 之间的区别

google-app-engine - 我怎样才能在谷歌应用引擎数据存储区中拥有动态属性

winapi - golang中的windows加密rdp密码

go - 如何在生产模式下在https中运行Beego二进制文件?

reflection - Go语言: Reading and casting bytes into struct fields

http.Client 拒绝使用 >unsupported protocol scheme ""< 即使已设置的请求