如何在golang中为结构创建对象

时间:2016-09-08 18:28:10

标签: go struct

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方法。

提前致谢。

2 个答案:

答案 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)
}

文件1

type ECAP struct {
    Eca *ECA //uppercase make field be exported
}

答案 1 :(得分:0)

您的示例不完整,但基本上您需要初始化结构,因为它有指针,默认指针值为nil。

var ecap := ECAP{new(ECA)}