You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go中替换变量为空标识符报no new variables on left side of :=错误如何解决

错误原因

Go 语言中的短变量声明符:=要求左侧变量列表中至少有一个是当前作用域下未声明过的新变量。你代码中的err变量已经在之前创建凭证、初始化 BlockBlobClient 时完成了声明,当你把resp替换为空标识符_后,:=左侧就只剩下无实际变量意义的_和已存在的err,没有新变量满足语法要求,因此编译器抛出错误。

解决方法

方法1:将短声明符:=改为普通赋值符=(最推荐)

因为err已经是已声明的变量,不需要再次声明,直接赋值即可:

// 仅修改第25行,去掉冒号,把resp替换为_
_, err = blockBlob.Delete(ctx, nil)

方法2:使用独立的局部错误变量

如果你需要隔离当前操作的错误和之前逻辑的错误变量,可以给本次操作的错误起新的变量名,满足:=的新变量要求:

_, deleteErr := blockBlob.Delete(ctx, nil)
if deleteErr != nil {
    log.Fatalf("Failure: %+v", deleteErr)
}

注意使用该方法时,后续错误判断要同步换成新的变量名deleteErr。

修改后的完整代码示例

package main

import (
    "context"
    "log"

    "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
    "github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)

func main() {
    cred, err := azidentity.NewDefaultAzureCredential(nil)
    if err != nil {
        log.Fatalf("Authentication failure: %+v", err)
    }

    ctx := context.Background()
    blobURL := "https://STORGEACCOUNT.blob.core.windows.net/CONTAINER/BLOB.txt"

    blockBlob, err := azblob.NewBlockBlobClient(blobURL, cred, nil)
    if err != nil {
        log.Fatalf("Create block blob client failure: %+v", err)
    }

    // 丢弃返回的响应结果,仅接收错误
    _, err = blockBlob.Delete(ctx, nil)
    if err != nil {
        log.Fatalf("Failure: %+v", err)
    }
}

内容的提问来源于stack exchange,提问作者joshduffney

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 22:24:06