在一个包中定义的接口在另一个包中不起作用

I have a simple interface defined in a package goQA and use it with a struct that implements the interface:

type ReportWriter interface {
    Name() string
    Init(parent ITestManager)
    onManagerStatistics(report *ManagerResult, stats *ReporterStatistics, name, msg string)
}


type MongoReporter struct {
}

func (t *MongoReporter) Name() string {
}

func (t *MongoReporter) Init(parent ITestManager) {
}

func (t *MongoReporter) onManagerStatistics(report *ManagerResult, stats *ReporterStatistics, name, msg string) {
}

I can then create a variable in an example file and everything works fine:

var mr goQA.ReportWriter
mr = &goQA.MongoReporter{}

The problem came when moving the struct to it's own package, mongo, and importing the goQA package. Everything is the same except using the package name:

type MongoReporter struct {
}

func (t *MongoReporter) Name() string {
}

func (t *MongoReporter) Init(parent goQA.ITestManager) {
}

func (t *MongoReporter) onManagerStatistics(report *goQA.ManagerResult, stats *goQA.ReporterStatistics, name, msg string) {
}

I Try and use struct in example program like before:

var mr goQA.ReportWriter
mr = &mongo.MongoReporter{}

There is an error message:

""""examples\example_mongo1.go:108: cannot use mongo.MongoReporter literal (type *mongo.MongoReporter) as type oQA.ReportWriter in assignment: *mongo.MongoReporter does not implement goQA.ReportWriter (missing goQA.onManagerStatistics method) have mongo.onManagerStatistics(*goQA.ManagerResult, *goQA.ReporterStatistics, string, string) want goQA.onManagerStatistics(*goQA.ManagerResult, *goQA.ReporterStatistics, string, string)""""

Why does it say "have mongo.onManagerStatistics but want goQA.onManagerStatistics?" Is the signature different? Why not complain about Init() and Name() methods?

After changing the Name() string method to Name(i int) string the error is

have Name(int) string want Name() string

Didn't say:

have mongo.Name(int) string want goQA.Name() string

I don't understand what the error is here. Doesn't look like the a simple error in implementing the interface.

How could package B provide a type which fulfills an interface of package A which has unexported methods? Exactly: It can't. You will have to export onManagerStatistics with a capital O.