我试图理解指针的概念。
我有三个软件包主,型号和控制器
在我的模型中.go
type Database struct {
config string
port int
}
var DB *Database
func GetDatabase() *Database {
fmt.Println("Reporting from Models.")
DB = &Database{config: "This is stunning!", port: 3306}
fmt.Printf("%v, %T\n", DB, DB)
return DB
}
在控制器中。go
var DB *models.Database = models.DB
func GetController() {
fmt.Println("Reporting from Controllers!")
fmt.Printf("%v, %T\n", DB, DB)
}
在主.go
var DB *models.Database
func main() {
DB = models.GetDatabase()
controllers.GetController()
fmt.Println("REporting from main")
fmt.Printf("%v, %T\n", DB, DB)
}
输出
Reporting from Models.
&{This is stunning! 3306}, *models.Database
Reporting from Controllers!
<nil>, *models.Database
REporting from main
&{This is stunning! 3306}, *models.Database
我在这里的问题是,为什么我要进入数据库的控制器?我的直觉是,它在模型内的包级别访问全局DB变量,这是自它未启动以来。但是,由于它是一个引用,并且我试图在我的GetDatabase函数中为它提供适当的引用,为什么当我尝试访问控制器中的该变量时,这种更改没有得到反映?nilnil
元芳怎么了
当年话下
相关分类