有没有办法从 Go 中的结构访问自定义构造函数中的内部参数?

Is there a way to access an internal parameter in a custom constructor from struct in Go?

我想访问自定义构造函数中的内部 属性,在我的例子中,它是来自超类的 属性,如下所示:

type BaseRepository struct {
    database mongo.Database
}

type PointRepository struct {
    BaseRepository

    pointCollection mongo.Collection
}

func NewPointRepository() *PointRepository {
    pointCollection := ***self***.database.GetCollection("points")

    pr := &PointRepository{
        pointCollection: pointpointCollection,
    }
}

如您所见,我需要访问类似 self 的内容才能使这种方法有效。

我该如何解决这种情况?

Go 中没有构造函数或 类。

PointRepository 嵌入 BaseRepository,它有一个未导出的 database 字段。任何与BaseRepository同包的函数都可以直接访问database字段。

如果您需要从包外的函数访问该字段,您要么必须导出它,要么必须在 BaseRepository.[=16= 中提供导出的 getter 方法]

解决方案 1:

Add Set function for BaseRepository

解决方案 2:

use unsafe package

type BaseRepository struct {
    database string
}

type PointRepository struct {
    BaseRepository
    pointCollection string
}

baseRepository := &internel.BaseRepository{}
databasePointer := (*string)(unsafe.Pointer(uintptr(unsafe.Pointer(baseRepository))))
*databasePointer = "changed here"
fmt.Printf("%+v",baseRepository)

输出:

&{database:changed here}

这只是一个示例,您应该更改字段数据库的类型。