使用 Go 包中的私有 "lowercase" 函数

Using the private "lowercase" functions from a Go package

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

html.go (from 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.

正确的做法是什么?

你不能。这是 blackfriday 的作者深思熟虑的决定。你唯一的选择是定义你自己的函数来做同样的事情。就好像用Java这样的语言访问私人会员一样。

在此处查看规范: https://golang.org/ref/spec#Exported_identifiers