如何在我的 main.go 中导入 go 接口包?

How to import go interface package in my main.go?

为清楚起见,删除了大部分代码以更加关注问题。我有一个名为 main.gogo-micro 服务器文件,其代码如下:

package main

import (
    "fmt"
    "strings"

    "github.com/micro/go-micro"
    "github.com/micro/go-micro/server"

    proto "mypkg/proto"
)

const serviceName = "SRV"

func main() {
    service := micro.NewService(
        micro.Name(strings.ToLower(serviceName)),
        micro.Server(
            server.NewServer(
                server.Name(strings.ToLower(serviceName))
            ),
        ),
    )

    service.Init()

    if err := proto.RegisterSRVServiceHandler(service.Server(), new(SRVService)); err != nil {
        panic(err)
    }

    if err := service.Run(); err != nil {
        panic(err)
    }
}

SRVService 在另一个名为 srv_service.go 的文件中(具有相同的包名),我不知道如何导入它:

package main

import (
    "context"
    proto "mypkg/proto"
)

type SRVService struct{}

func (g *SRVService) AddUser(ctx context.Context, req *proto.AddUserRequest, rsp *proto.AddUserResponse) error {
    rsp.UserId = "12312331231"
    return nil
}

我应该如何在 main.go 中访问 SRVService

如果它们在同一文件夹中,则它们是同一包的一部分(它们的包声明必须反映这一点)。如果它们是同一个包的一部分,则不需要导入任何东西。您可以从包中引用所有标识符(正在导出或未导出)。

main 包很特别。如果您的 main 包包含多个文件,您必须在 运行 或构建应用程序时列出所有文件,例如:

go run srv_service.go main.go