go - golang 中的类型不一致,不能使用 <Type> 作为 *Type

标签 go pdf

您好,我在 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) 发送,我将无法使用它的方法,我只是看到:
enter image description here
我想将此 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/

相关文章:

mongodb - Golang mgo 返回带有聚合 $group 的值

templates - 如何用逗号连接领事模板的服务元数据

go - 原子 AddUint32 溢出

pdf - 在另一个ColdFusion报告模板中包含ColdFusion报告模板

java - 将 XML 文件渲染为 byte[] 格式的 PDF

java - 使用 iText 在 Java 中生成 PDF。支持自由流动的文本

go - 如何从 JWT token 中提取声明

go - 在 Go 中读取 C 编写的二进制文件

java - 使用itext在pdf页脚中创建包含2行的表格

javascript - 当在 html 对象标签上调用 JS 函数 'postMessage()' 时,它会做什么?