Blockchain 执行main.go时,我得到未定义的ethclient

Blockchain 执行main.go时,我得到未定义的ethclient,blockchain,ethereum,Blockchain,Ethereum,我正在写一个脚本,用一个智能合约来打断: package main import ( "context" "fmt" "log" "github.com/ethereum/go-ethereum" "github.com/joho/godotenv" ) var myenv map[string]string const envLoc = ".env" func loadEnv() { var err error if myenv

我正在写一个脚本,用一个智能合约来打断:

package main

import (
    "context"
    "fmt"
    "log"

    "github.com/ethereum/go-ethereum"
    "github.com/joho/godotenv"
)

var myenv map[string]string

const envLoc = ".env"

func loadEnv() {
    var err error
    if myenv, err = godotenv.Read(envLoc); err != nil {
        log.Printf("could not load env from %s: %v", envLoc, err)
    }
}

func main() {
    loadEnv()

    ctx := context.Background()

    client, err := ethclient.Dial(os.Getenv("GATEWAY"))
    if err != nil {
        log.Fatalf("could not connect to Ethereum gateway: %v\n", err)
    }
    defer client.Close()

    accountAddress := common.HexToAddress("786af135e476c3b6061482e90c6273b8ee78c159")
    balance, _ := client.BalanceAt(ctx, accountAddress, nil)
    fmt.Printf("Balance: %d\n", balance)
}
我得到未定义的ethclient和未定义的common。
我不明白为什么我会犯这些错误?它以前工作正常

您没有导入代码使用的包

添加import github.com/ethereum/go-ethereum/ethclient 我不确定公共包应该放在哪里,但您也缺少它的导入。
确保导入正确的软件包。下面是一个工作示例:

包干管 进口 上下文 fmt 日志 操作系统 github.com/ethereum/go-ethereum/common github.com/ethereum/go-ethereum/ethclient github.com/joho/godotenv func main{ 错误:=godotenv.Load 如果错误!=零{ log.FatalError加载.env文件 } ctx:=context.Background fmt.Printlnos.GetenvGATEWAY 客户端,错误:=ethclient.Dialos.GetenvGATEWAY 如果错误!=零{ 日志。FATALF无法连接到以太坊网关:%v\n,错误 } 延迟客户端。关闭 accountAddress:=common.hexto地址786AF135E476C3B6061482E90C6273B8EE78C159 余额,\:=client.BalanceAtctx,accountAddress,无 fmt.PrintfBalance:%d\n,余额 }