为了账号安全,请及时绑定邮箱和手机立即绑定

如何解决“在没有选择器错误的情况下使用包”

如何解决“在没有选择器错误的情况下使用包”

Go
白衣染霜花 2022-06-13 10:53:29
我正在使用一个包:ccs08 在我的主目录中,我正在导入包并使用它的一些功能。我遵循了给出的单元测试中的用法:package mainimport( "fmt" "math/big" "crypto/rand" "zkrp/ccs08" "zkrp/crypto/bn256")func main(){        var (            r *big.Int            s []int64        )        s = make([]int64, 4)        s[0] = 12        s[1] = 42        s[2] = 61        s[3] = 71        p, _ := ccs08.SetupSet(s)        r, _ = rand.Int(rand.Reader, bn256.Order)        proof_out, _ := ccs08.ProveSet(12, r, p)        result, _ := ccs08.VerifySet(&proof_out, &p)        if result != true {            fmt.Println("not verified")        }}然后我有一个类似的主文件 main2,我在其中使用来自同一个包的另一组函数。这不起作用package mainimport( "fmt" "math/big" "crypto/rand" "zkrp/ccs08" "zkrp/crypto/bn256")func main(){    var (        result bool        zkrp ccs08    )    zkrp.Setup(347184000, 599644800)    zkrp.x = new(big.Int).SetInt64(419835123)    zkrp.r, _ = rand.Int(rand.Reader, bn256.Order)    e := zkrp.Prove()    result, _ = zkrp.Verify()    if result != true {        fmt.println("not verified")    }}我收到此错误:./main2.go:7: 已导入且未使用:“zkrp/ccs08”。./main2.go:16:使用没有选择器的包 ccs08。我究竟做错了什么?
查看完整描述

1 回答

?
守着一只汪

TA贡献1872条经验 获得超3个赞

ccs08对于第一个文件,一切正常,因为代码使用了包的公共成员。但是,第二个文件并非如此。


您提到第二个文件中的代码是从这里复制的。


要了解为什么代码在粘贴到包外的 main 方法时不起作用ccs08,您需要了解它在其原始位置所做的事情。具体这部分:


var (

    result bool

    zkrp   ccs08

)

在原始位置(ccs08包内)有一个名为ccs08. 声明可以在这里看到。上面的代码正在做的是创建一个名为zkrp的变量,其类型是私有结构类型ccs08。然后,在变量上调用的各种函数是绑定到这个私有结构的方法(您可以在此处查看方法)。


现在,在您发布的代码中(粘贴到ccs08包外的位置后),无法访问私有ccs08结构(我什至找不到在 zkrp 源代码中返回它的公共方法)。因此,Go 在尝试执行此代码时看到的是一个错字(它认为您正在尝试编写某种形式的东西package.Member):


// this looks like you wanted to declare a variable with type:

// "ccs08.SomeType" but forgot to write ".SomeType"

// Thus Go gives the error: "use of package ccs08 without selector"

var zkrp ccs08 

并且“已导入且未使用”错误是因为该ccs08包未在代码中的任何位置以有效方式使用。


老实说,您复制的代码对于所有字符串的重用ccs08和zkrp不同事物的命名非常令人困惑。我希望这能澄清一点。


查看完整回答
反对 回复 2022-06-13
  • 1 回答
  • 0 关注
  • 173 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信