我开始研究一个Go
项目,它使用 Github 私有存储库中的一些私有模块,每当我尝试运行go run main.go
它时,都会出现以下410 Gone
错误:
验证 github.com/repoURL/go-proto@v2.86.0+incompatible/go.mod:github.com/repoURL/go-proto@v2.86.0+incompatible/go.mod:阅读https://sum.golang。 org/lookup/github.com/!repoURL/go-proto@v2.86.0+incompatible : 410 Gone
我可以轻松地从终端克隆私有 repo,这意味着我的ssh
密钥配置正确。我在这里读到我需要设置GOPRIVATE
环境变量,但我不知道该怎么做。
任何人都可以回答或指向相关教程吗?
转到: v1.13,操作系统: macOS Mojave
当我启用gomodules并构建我的go程序时,将下载所需的包.
但我可以在$ GOPATH/src /或$ GOPATH/src/mod中找到它们.
它们存放在哪里?
export GO111MODULE=on
go mod init
go build main.go
go: finding github.com/sirupsen/logrus v1.0.6
go: downloading github.com/sirupsen/logrus v1.0.6
...
Run Code Online (Sandbox Code Playgroud) 我正在尝试从OpenID获取用户信息
https://developers.google.com/identity/protocols/OpenIDConnect#exchangecode
我收到来自的令牌响应:
tok, err := bookshelf.OAuthConfig.Exchange(context.Background(), code)
Run Code Online (Sandbox Code Playgroud)
我可以检查tok
并看到有一个id_token
元素:
log.Printf("************ tok contains %#v", tok)
2019/05/13 15:11:24 ************ tok contains &oauth2.Token{AccessToken:"XXXXXXXXXXX", TokenType:"Bearer", RefreshToken:"", Expiry:time.Time{wall:0xbf2f2c6b181f7b0f, ext:3608126524112, loc:(*time.Location)(0x18516e0)}, raw:map[string]interface {}{"scope":"openid https://www.googleapis.com/auth/profile.emails.read", "token_type":"Bearer", "id_token":"Base64-encodedJSONobject", "access_token":"HASH", "expires_in":3600}}
Run Code Online (Sandbox Code Playgroud)
我不明白如何从中提取索赔id_token
。在哪里可以找到从JWT获取有效负载的示例id_token
?
当我尝试解码 id_token
id_token := base64.StdEncoding.DecodeString(tok.id_token)
Run Code Online (Sandbox Code Playgroud)
我得到这些错误:
multiple-value base64.StdEncoding.DecodeString() in single-value context
/var/folders/mw/0y88j8_54bjc93d_lg3120qw0000gp/T/tmpbPyjTZappengine-go-bin/auth.go:133:49: tok.id_token undefined (type *oauth2.Token has no field or method id_token)
Run Code Online (Sandbox Code Playgroud)
如何使用OpenID(而不是Google+)实现与下面的fetchProfile函数等效的功能?
我只能找到不推荐使用的Google+库:
func oauthCallbackHandler(w http.ResponseWriter, r *http.Request) *appError {
oauthFlowSession, err := bookshelf.SessionStore.Get(r, r.FormValue("state"))
if …
Run Code Online (Sandbox Code Playgroud) 有没有办法在模块中使用较短的名称表示/映射?
我有一个项目,其 url 命名为:
module github.com/<org>/<project>
go 1.14
Run Code Online (Sandbox Code Playgroud)
如果能够做到这一点就太好了:
import "<short_name>/<project>/package_folder"
Run Code Online (Sandbox Code Playgroud)
来自 a go.mod
,类似:
module github.com/<org>/<project> => short_name
go 1.14
Run Code Online (Sandbox Code Playgroud) 我有一个go.mod
如下所示的文件:
module someName
go 1.13
require (
.
.
golang.org/x/crypto v0.0.0-20190621222207-cc06ce4a13d4
localpackage v0.0.0
)
replace localpackage => ../localpackage
Run Code Online (Sandbox Code Playgroud)
这正如预期的那样工作!我不明白的是如何添加某个版本或向replace
指令提交哈希!
例如:
replace localpackage => ../localpackage v1.0.0
Run Code Online (Sandbox Code Playgroud)
或者
replace localpackage => ../localpackage v0.0.0-20190731182444-35453ccff3d6
Run Code Online (Sandbox Code Playgroud)
这样做会导致错误:
替换模块目录路径“../localpackage”不能有版本
该错误非常明显,我不应该将版本添加到本地替换中。我检查了维基但找不到答案!
是否可以添加这种replace
ment以及如何添加?我在这里缺少什么?
我正在将一些旧的内容从 Python 翻译成 Go。在此代码中,我在 Python 中使用了向下取整除法和向下取整运算符。
d = b // c
# (c isn't a comment, I use the // operator from python)
Run Code Online (Sandbox Code Playgroud)
我的问题是,Go 中不存在这个运算符。在 Go 中翻译最简单的方法是什么?
我想编写一个测试用例来验证我的参数解析器功能。以下是我模拟 http.request 的示例代码
rawUrl := "http://localhost/search/content?query=test"
func createSearchRequest(rawUrl string) SearchRequest {
api := NewWebService()
req, err := http.NewRequest("POST", rawUrl, nil)
if err != nil {
logger.Fatal(err)
}
logger.Infof("%v", req)
return api.searchRequest(req)
}
Run Code Online (Sandbox Code Playgroud)
我的网络服务器使用github.com/gorilla/mux作为路由
router := mux.NewRouter()
router.HandleFunc("/search/{query_type}", searchApiService.Search).Methods("GET")
Run Code Online (Sandbox Code Playgroud)
但在我的测试用例中我无法{query_type}
从模拟中得到http.request
func (api WebService) searchRequest(req *http.Request){
// skip ....
vars := mux.Vars(req)
queryType := vars["query_type"]
logger.Infof("queryType:%v", queryType)
//skip ....
}
Run Code Online (Sandbox Code Playgroud)
如何在我的测试用例中获取 mux 的路径参数?
我在 MySQL 中使用 GORM,我遇到并处理了错误Error 1062: Duplicate entry
。问题是它仍然打印到控制台。
代码gym/models/auth.go:49
:
func AddAuth(username, password string) error {
passwordHash, err := auth.HashPassword(password, argon2Conf)
if err != nil {
return err
}
userAuth := Auth{
Username: username,
Password: passwordHash,
}
return db.Create(&userAuth).Error
}
Run Code Online (Sandbox Code Playgroud)
我正在处理处理程序函数中的错误:
func SignUpHandler(c *gin.Context) {
var form user
if err := c.ShouldBind(&form); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
if err := models.AddAuth(form.Username, form.Password); err == nil {
c.JSON(http.StatusOK, gin.H{"status": "you are signed in"})
} else …
Run Code Online (Sandbox Code Playgroud) 我想使用ebpf
.
在阅读了一些帖子和博客后,我知道%fs:0xfffffffffffffff8
指向g
go的结构和mov %fs:0xfffffffffffffff8,%rcx
指令总是出现在 go 函数的开头。
以main.main
作为一个例子:
func main() {
177341 458330: 64 48 8b 0c 25 f8 ff mov %fs:0xfffffffffffffff8,%rcx
177342 458337: ff ff
177343 458339: 48 3b 61 10 cmp 0x10(%rcx),%rsp
177344 45833d: 76 1a jbe 458359 <main.main+0x29>
177345 45833f: 48 83 ec 08 sub $0x8,%rsp
177346 458343: 48 89 2c 24 mov %rbp,(%rsp)
177347 458347: 48 8d 2c 24 lea (%rsp),%rbp
177348 myFunc()
177349 45834b: e8 10 00 …
Run Code Online (Sandbox Code Playgroud) 我正在尝试Golang中的频道概念。我写了下面的程序操场来实现使用通道的计数器。但是,尽管我正在goroutine主体中进行一些打印,但是我没有得到任何输出。
func main() {
wg := sync.WaitGroup{}
ch := make(chan int)
count := func(ch chan int) {
var last int
last = <-ch
last = last + 1
fmt.Println(last)
ch <- last
wg.Done()
}
wg.Add(10)
for i := 1; i <= 10; i++ {
go count(ch)
}
}
Run Code Online (Sandbox Code Playgroud)
我希望至少有一些输出,但是我什么也得不到。