代码之家  ›  专栏  ›  技术社区  ›  kentor

扩展库的结构/接口

go
  •  0
  • kentor  · 技术社区  · 6 年前

    我正在使用Shopify的sarama图书馆,这是一个客户端库。更具体地说,我用的是 ClusterAdmin 结构,这是伟大的,但我想添加另一个方法 ListDetailedTopics 我必须调用ClusterAdmin的非公共方法。

    https://github.com/Shopify/sarama/blob/master/admin.go

    我不知道如何用自己的方法“扩展”导出的结构。我试过这个:

    func (ca *sarama.ClusterAdmin) ListDetailedtopics() {
      b, err := ca.findAnyBroker() // This is a private method I need to call
    }
    

    1 回复  |  直到 6 年前
        1
  •  4
  •   ifnotak    6 年前

    你呢 不能 将接口扩展到其包之外。

    type ExtendedClusterAdmin interface {
       sarama.ClusterAdmin
       ListDetailedtopics()
    }
    

    如果您想在包中使用私有函数,那么您必须在包本身中使用私有函数。例如,使用补丁。