使用私人"小写" Go包中的函数

时间:2015-02-28 04:22:59

标签: go package

我尝试在我的main包中使用以下功能:

html.go (来自blackfriday):

func doubleSpace(out *bytes.Buffer) {
    if out.Len() > 0 {
        out.WriteByte('\n')
    }
}

main.go:

func (options *renderer) Paragraph(out *bytes.Buffer, text func() bool) {
    marker := out.Len()
    doubleSpace(out)

    out.WriteString("<p class='custom'>")
    if !text() {
        out.Truncate(marker)
        return
    }
    out.WriteString("</p>\n")
}

我尝试过blackfriday.doubleSpaceblackfriday.DoubleSpace,但在这三种情况下,我得到undefined

正确的方法是什么?

1 个答案:

答案 0 :(得分:4)

你不能。这是blackfriday的作者故意做出的决定。你唯一的选择是定义你自己的功能,它做同样的事情。它就像使用Java这样的语言访问私有成员一样。

请参阅此处的规范: https://golang.org/ref/spec#Exported_identifiers