草庐IT

go-http-auth

全部标签

go - 如何在 GO 中将包含斜杠的 url 作为路径参数传递?

我想发送一个url,例如“Documents/folder1/folder2/file.txt”,或者它可以有较少的斜杠,例如“Documents/folder1/file.txt”,我想将此url作为路径传递参数,例如router.HandleFunc("/myproject/v1/image/{url}",GetImage)但是在执行此操作时,它会转到ex的url:/myproject/v1/image/Documents/folder1/file.txt,但找不到它,因此返回404。我正在使用gorilla复用器:funcmain(){router:=mux.NewRouter(

ubuntu - Gogs 构建失败并显示 "no buildable Go source files"

我试图从thisguide之后的源代码安装gogs.然而,一旦我导航到gogs目录并点击“gobuild”,我收到以下错误“[PATH-TO-GOGS]中没有可构建的Go源文件”但是所有必需的文件似乎都在那里。 最佳答案 我会继续回答我自己的问题,因为我想通了:进入gogs目录nanogogs.go看第一行对我来说是//+buildgo1.5这意味着您至少需要go1.5才能构建。现在看看你的go版本:go--version如果这个数字较小,这就是您的构建甚至无法开始的原因。在我的例子中,ubuntu使用的是位于的旧版本whereis

http - 从 golang 中的 reader.io 对象获取属性

我是golang的新手,遇到了一些小问题:当我像这里这样发出http请求时,我得到了remoteApi给我一些响应:res,err:=http.DefaultClient.Do(req)响应的正文包含一些json,例如:{a:'hello'b:5c:[1,2,3]}我需要将“a”的值赋给其他变量。访问res.Body属性之一的最佳方式是什么?我尝试转换为json/string等但没有成功谢谢 最佳答案 像这样的东西应该可以工作:varsstruct{Astring}err:=json.NewDecoder(response.Body

当我执行这个 go 代码时,html 代码显示没有 css,但是当我直接在浏览器中打开它时,它显示 html 和 css 都很好

packagemainimport("fmt""html/template""log""net/http")funcmain(){templates:=template.Must(template.ParseFiles("templates/index.html"))http.HandleFunc("/",func(whttp.ResponseWriter,r*http.Request){iferr:=templates.ExecuteTemplate(w,"index.html",nil);err!=nil{http.Error(w,err.Error(),http.StatusIn

go - 基于字符串断言类型?

假设我有以下内容:typeTstruct{Namestring}然后我创建一个T类型的变量:thing:=T{"HelloWorld"}然后我反射(reflect)类型:t:=reflect.TypeOf(thing)//main.T然后我将t传递给一个接受接口(interface)的方法,有什么方法可以让我在那个方法中说接受的interface{}是类型main.T如果我有那个字符串?用例是我有一个适合某种类型的json字符串。我有一个该类型的字符串(main.T),我希望能够创建一个类型为main.t的新变量,当我只知道string,main.T然后将数据编码到那个新变量。

json - 在 Go 中将 JSON 解码为自定义格式

我试图让我的json以特定方式格式化以插入到数据库中。我能够解码json并将其映射到一个结构,但我需要能够为我需要的Companies数组添加和删除属性。我怎样才能让它产生下面代码中指出的最终结果?packagemainimport("encoding/json""fmt")typeInterestedPartiesstruct{Companies[]Company`json:"companies"`CCIDstring`json:"eventCCID"`}typeCompanystruct{CompanyIDstring`json:"companyID"`CompanyTypestr

go - go : different output on named return value 中的闭包

考虑以下函数:funcmain(){varaint=3sum:=func(){a=a*2}sum()sum()fmt.Println(a)//returns12}但是:funcmain(){varaint=3sum:=func()(aint){a=a*2;return}sum()sum()fmt.Println(a)//returns3}我不能完全理解这种行为的逻辑:为什么它会在a=a*2之后返回a的旧值 最佳答案 就像@TimCooper评论的那样,您正在隐藏“a”。如果运行下面的代码,您将看到两个不同的内存地址。表示是“2个变量

go - 接口(interface)声明差异

作为初学者gopher,我正在努力理解它们之间的区别:m:=map[string]interface{}{}和m:=make(map[string]interface{})我试图找到一个解释,但找不到任何东西。 最佳答案 除了使用make时,两者都是相同的,您可以(当然是可选的)指定您尝试初始化的map的大小。例如,m:=make(map[string]interface{},10)此外,当您像这样初始化map字面量时-m:=map[string]interface{}{}您可以随时为其添加值。在这种情况下,您已将其初始化为nil映

go - 读取一个通用的 yaml 文件

我有一个YAML格式的配置文件。我想为这个文件定义一个足够通用的结构。例子:A:B:C:D:E:F:G:由于没有预定义的结构,我无法为这种结构找到合适的结构。PS:包含所有字段的结构是NotAcceptable。 最佳答案 因为我的配置文件只是一个map结构。所以我所做的是向map添加另一个嵌套级别并创建map的map。像这样:varm:=make(map[string](map[string]string))现在我的配置看起来像这样:A:B:C:D:E:F:G: 关于go-读取一个通用

Go type assertion with interface 不明白它是怎么做到的

我正在阅读“GoBootcamp”,第3章第20页中有一个示例我无法理解。在此示例中,在printString(s)行中,s是fakeString类型的变量,但在开关中,进入“Stringer”情况。我试图了解这怎么可能。任何帮助,将不胜感激。代码是:packagemainimport"fmt"typeStringerinterface{String()string}typefakeStringstruct{contentstring}//functionusedtoimplementtheStringerinterfacefunc(s*fakeString)String()strin