如何使用go-github向GitHub Issue提交评论?解决代码报错
解决go-github测试代码错误及添加GitHub Issue评论的方法
一、修复现有测试代码的错误
你的代码出现三个明确错误,对应修复方式如下:
- 补充context包导入:代码中使用了
context.Background()但未引入标准库的context包,需在import块中添加"context"。 - 处理未使用变量:
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方法,完整步骤如下:
- 准备评论内容,创建
github.IssueComment结构体并设置Body字段。 - 调用
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
相关产品推荐
相关产品推荐

