您好,我在 Golang 中有下一个代码:
func createPDF(count int) {
pdfFile := pdf.NewMaroto(consts.Portrait, consts.A4)
pdfFile.SetPageMargins(10, 15, 10)
writeGroups(pdfFile)
}
func writeGroups(pdf *pdf.Maroto) {
//Do something
}
如果我将它作为 (&pdfFile) 发送,我将无法使用它的方法,我只是看到:我想将此 pdf 变量作为指向 writeGroups 方法的指针传递,并且我在 Golang 中得到一个不能使用类型(Maroto)作为类型 * pdf.Maroto。我是语言新手,有可能吗?问题是什么意思?
谢谢
最佳答案
假设您使用 https://github.com/johnfercher/marotopdf.Maroto
是一个接口(interface),您可以通过引用将其传递到您的函数中,而无需将其转换为指向接口(interface)的指针。
因此,如果您将功能更改为
func writeGroups(pdf pdf.Maroto) {
//Do something
}
您现在应该可以调用 pdf.Maroto 上的接口(interface)函数了。这些函数定义是为 pdf.Maroto 而不是 *pdf.Maroto 定义的,这就是您不能使用它们的原因。或者,如果您确定需要指向 pdf.Maroto 函数的指针,则可以取消引用该指针,然后调用所需的函数。
func writeGroups(pdf *pdf.Maroto) {
(*pdf).AddPage()
}
关于go - golang 中的类型不一致,不能使用 <Type> 作为 *Type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64000851/