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

如何使用go-github向GitHub Issue提交评论?解决代码报错

解决go-github测试代码错误及添加GitHub Issue评论的方法

一、修复现有测试代码的错误

你的代码出现三个明确错误,对应修复方式如下:

  1. 补充context包导入:代码中使用了context.Background()但未引入标准库的context包,需在import块中添加"context"。
  2. 处理未使用变量:repos和err声明后未被使用,Go编译器不允许这种情况,可通过添加错误处理和变量使用逻辑解决,或直接删除无关的仓库列表代码。

修正后可正常运行的仓库列表测试代码:

package main

import (
    "context"
    "fmt"
    "golang.org/x/oauth2"
    "github.com/google/go-github/v49/github"
)

func main() {
    ctx := context.Background()
    ts := oauth2.StaticTokenSource(
        &oauth2.Token{AccessToken: "your_github_token"},
    )
    tc := oauth2.NewClient(ctx, ts)

    client := github.NewClient(tc)

    // 列出当前认证用户的仓库
    repos, _, err := client.Repositories.List(ctx, "", nil)
    if err != nil {
        fmt.Printf("获取仓库列表失败: %v\n", err)
        return
    }
    fmt.Printf("共获取到 %d 个仓库\n", len(repos))
    for _, repo := range repos {
        fmt.Println(*repo.Name)
    }
}

二、使用go-github向GitHub Issue添加评论

要实现添加Issue评论,需调用client.Issues.CreateComment方法,完整步骤如下:

  1. 准备评论内容,创建github.IssueComment结构体并设置Body字段。
  2. 调用CreateComment方法,传入上下文、仓库所有者、仓库名称、Issue编号和评论结构体。

完整的添加评论代码示例:

package main

import (
    "context"
    "fmt"
    "golang.org/x/oauth2"
    "github.com/google/go-github/v49/github"
)

func main() {
    ctx := context.Background()
    // 替换为你的GitHub个人访问令牌(需具备repo权限)
    token := "your_github_token"
    ts := oauth2.StaticTokenSource(&oauth2.Token{AccessToken: token})
    tc := oauth2.NewClient(ctx, ts)
    client := github.NewClient(tc)

    // 配置目标仓库与Issue信息
    owner := "your_username_or_org"
    repo := "your_repo_name"
    issueNumber := 123 // 替换为实际Issue编号

    // 构造评论内容
    comment := &github.IssueComment{
        Body: github.String("这是通过go-github添加的自动评论"),
    }

    // 发送评论请求
    createdComment, _, err := client.Issues.CreateComment(ctx, owner, repo, issueNumber, comment)
    if err != nil {
        fmt.Printf("添加评论失败: %v\n", err)
        return
    }
    fmt.Printf("评论添加成功,评论ID: %d\n", *createdComment.ID)
}

关键注意事项

  • 确保GitHub令牌拥有repo(私有仓库)或public_repo(公开仓库)权限,否则会返回权限不足错误。
  • 代码中所有占位符(如令牌、仓库名、Issue编号)需替换为实际业务值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 01:00:48