Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 类型转换错误_String_Go_Int - Fatal编程技术网

String 类型转换错误

String 类型转换错误,string,go,int,String,Go,Int,我在这里尝试按照教程进行操作: 在他的代码中,他调用标题,然后将其硬编码到块号 header, err := client.HeaderByNumber(context.Background(), nil) if err != nil { log.Fatal(err) } fmt.Println(header.Number.String()) // 5671744 blockNumber := big.NewInt(5671744) 我尝试

我在这里尝试按照教程进行操作:

在他的代码中,他调用
标题
,然后将其硬编码到
块号

 header, err := client.HeaderByNumber(context.Background(), nil)
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println(header.Number.String()) // 5671744

    blockNumber := big.NewInt(5671744)
我尝试对此进行改进,并将字符串转换为int64

header, err := client.HeaderByNumber(context.Background(), nil)
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println(header.Number.String())

    var stringBlockNumber = header.Number.String()

    int64BlockNumber, err := strconv.ParseInt(stringBlockNumber, 10, 64)
    if err != nil {
        log.Fatal(err)
    }

    blockNumber := big.NewInt(int64BlockNumber)

    block, err := client.BlockByNumber(context.Background(), blockNumber)
    if err != nil {
        log.Fatal(err)
    }
在尝试添加以下行之前,此操作一直有效:

fmt.Println(block.Number.Uint64())
我在终端中发现以下错误:

./queryBlock.go:41:26:block.Number.Uint64未定义(类型func() *大。Int没有字段或方法(Uint64)


如果有人能给我指点,我将不胜感激

通过
client.BlockByNumber
获得block by number后,block的类型为
block
from
/github.com/ethereum/go ethereum/core/types


块的
Number
是一个,它返回一个
*big.Int
而不是该类型的字段。因此,要检索号码,您应该调用该方法,即,
block.number()

尝试
fmt.Println(block.number().Uint64())
。似乎
block.Number
是一个返回
*big.Int
的函数,而不是
*big.Int
本身。工作正常!你能不能加上解释,这样我就可以接受,其他人也可以从中学习