File1.go
Package abc
type ECA struct {
*CA
obcKey []byte
obcPriv, obcPub []byte
gRPCServer *grpc.Server
}
type ECAP struct {
eca *ECA
}
func (ecap *ECAP) ReadCACertificate(ctx context.Context, in *pb.Empty) (*pb.Cert, error) {
Trace.Println("gRPC ECAP:ReadCACertificate")
return &pb.Cert{Cert: ecap.eca.raw}, nil
}
File2.go
package main
import "abc"
var ecap abc.ECAP //creating instance
func main() {
err = ecap.ReadCACertificate(floo,floo)
}
我是新手。我想创建ECAP结构的实例并调用ReadCACertificate方法。现在我正在创建这样的“var ecap abc.ECAP //创建实例”,它给出了“nil”和nil指针错误。
任何人都可以帮助您以有效的方式调用ReadCACertificate方法。
提前致谢。
答案 0 :(得分:0)
您需要从$ GOPATH导入第二个文件。并且您的函数返回2个值,而不仅仅是错误。
package main
import (
"$RELATIVE_PATH_FROM_GOPATH/abc"
)
var ecap := ECAP{new(ECA)} //initialize your struct, since it has pointers
func main() {
cert, err = ecap.ReadCACertificate(floo,floo)
}
type ECAP struct {
Eca *ECA //uppercase make field be exported
}
答案 1 :(得分:0)
您的示例不完整,但基本上您需要初始化结构,因为它有指针,默认指针值为nil。
var ecap := ECAP{new(ECA)}