jjzjj

bounded-contexts

全部标签

go - 如何捕获 "slice bounds out of range"错误并为其编写句柄

我在stackoverflow中阅读了有关“范围的slice边界”的其他问题,但没有一个使用与此相同的上下文。然后,没有一个答案对我有帮助。在我的用例中,使用[]的子字符串的“golang语法”不会返回错误变量。它使用“panic”指令启动运行时错误。我的目标是避免达到“panic”指令。我需要处理此错误并提供消息来更详细地描述发生此错误时的上下文。观察:我需要获取子字符串值的字符串变量的内容是完全动态的,我用来获取子字符串值的索引同样是动态计算的。 最佳答案 您需要对索引进行边界检查:ifj>=0&&j

go - golang Context的正确风格和用法是什么?

我是golang新手,想更好地理解上下文。在下面的代码片段中,在我看来,我已经使用上下文实例化了我的computeService。为什么我在调用Stop()时必须再次将它传递给.Context()函数?packagemainfuncstopTaggedMachines(ctxcontext.Context,svc*compute.Service,project,zone,tagstring)([]string,error){varinstances[]stringf:=func(page*compute.InstanceList)error{for_,v:=rangepage.Item

go - context中的值不能在不同的包中传输?

今天尝试用context编程,代码如下:packagemainfuncmain(){ctx:=context.Background()ctx=context.WithValue(ctx,"appid","test111")b.dosomething()}packagebfuncdosomething(ctxcontext.Context){fmt.Println(ctx.Value("appid").(string))}然后我的程序崩溃了,我想是因为这些ctx在不同的包里 最佳答案 我建议您仅在单个任务的生命周期中使用上下文,并通过

go - 为什么在这种情况下 go 不报告 "slice bounds out of range"?

这个问题在这里已经有了答案:Whydoesgoallowslicingfromlen(slice)?(3个答案)关闭4年前。这里是重现的代码:packagemainimport"fmt"funcmain(){varv[]intv=append(v,1)v=append(v,v[1:]...)fmt.Println("hi",v)}v[1]会报indexoutofrange,而v[1:]...不会,为什么呢?

go - context 在使用 Value(key) 后返回 nil 接口(interface)

我有一个ctx(context.Context)变量,它的值为:ctx=context.Background.WithCancel.WithCancel.WithValue(peer.peerKey{},&peer.Peer{Addr:(*net.UnixAddr)(0xc000270820),AuthInfo:credentials.AuthInfo(nil)}).WithValue(metadata.mdIncomingKey{},metadata.MD{":authority":[]string{"unix:///run/containerd/containerd.sock"},

go - 在 martini.Context 中获取请求 url

我想给自己发送电子邮件,但页面http://localhost:3000/panic出现错误包含错误url-/panic在我们的例子中。但是我不知道如何从RecoverWrap方法中的cmartini.Context获取url。packagemainimport("errors""github.com/go-martini/martini""net/http")funcmain(){m:=martini.Classic()m.Use(RecoverWrap)m.Get("/panic",func(){panic("somepanic")})m.Get("/",func(req*http

session - 为什么要使用 gorilla/context 而不是 session 来进行用户身份验证?

我了解golang中context和session的区别。gorilla/context存储在请求生命周期内共享的值,而gorilla/session数据通过安全cookie在多个请求中持续存在。一些博客声称需要上下文才能将用户数据从一个中间件传递到另一个。对于用户身份验证,您无论如何都必须将用户数据存储在session中,为什么您还要将用户数据存储到上下文中?我想这是为了让您不必再次从session(cookie)获取用户数据,但这似乎是多余的。 最佳答案 gorilla/sessions包使用gorilla/context在实现

ssl - Python 的 create_default_context() 等价于 Go?

我正在尝试修改我的Go客户端和服务器代码以使用TLS。在Python中我可以做ssl.create_default_context(purpose=ssl.Purpose.SERVER_AUTH)这将自动加载系统的可信CA证书并使用安全设置。我想知道Go中是否有类似的东西可以自动加载受信任的CA证书。我不确定要为客户的证书放什么。 最佳答案 我认为您正在寻找tls.Config.但请记住,Python的ssl.create_default_context公开了许多大多数人不需要的SSL内部结构,您的应用程序中可能不需要tls.Con

go - 如何从 *http.Request 和 *httptest.ResponseRecorder 创建 gin.Context?

我想为gin创建一个测试助手类似于testify'sHTTPBodyContain.我很难从*http.Request和*httptest.ResponseRecorder创建gin.Context。我已经写过这样的东西:funcHTTPBodyContains(t*testing.T,handlergin.HandlerFunc,method,urlstring,valuesurl.Values,strinterface{},msgAndArgs...interface{})bool{body:=HTTPBody(handler,method,url,values)contains:

go - 在遍历 slice 并通过 "slice bounds out of range"修改它时出现 "append()"错误

我编写了一个函数,用一段字符串([]string)中的一个单词替换重复单词的序列。我使用“range”遍历slice并使用“append()”修改slice。下面是代码:funcRemoveContinuosStrings(input[]string)[]string{top:=0fori,_:=rangeinput{ifinput[i]!=input[top]{iftop!=i-1{input=append(input[:top+1],input[i:]...)}top=i}}returninput[:top+1]}funcmain(){scanner:=bufio.NewScann