如何在我的 main.go 中导入 go 接口包?
How to import go interface package in my main.go?
为清楚起见,删除了大部分代码以更加关注问题。我有一个名为 main.go
的 go-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
为清楚起见,删除了大部分代码以更加关注问题。我有一个名为 main.go
的 go-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