草庐IT

go > 如何从 main 重构 http 处理程序

我正在学习go语言,知识还有些欠缺。我正在编写http静态服务器(在第一阶段为Assets提供服务)。我也在尝试使用gorilla/mux包作为路由器。到目前为止我结束了pagekagemainimport("fmt""github.com/gorilla/mux""html""net/http")funcHomeHandler(whttp.ResponseWriter,r*http.Request){fmt.Fprintf(w,"Hello,%q",html.EscapeString(r.URL.Path))}funcmain(){r:=mux.NewRouter()r.Handle

linux - 从 TCP 连接获取 HTTP header

我正在用golang为Linux编写类似应用程序的代理程序。该应用程序在执行时将监听所有TCP连接并将它们重定向到代理服务器地址。在应用程序之间还向HTTPheader添加了“Proxy-Authorisation:Basic...”header。当我看到TCPheader时,我无法获得HTTPheader。我哪里出错了或如何提取HTTP数据?还有其他方法可以实现吗? 最佳答案 我也是golang的新手,但就从tcp套接字获取HTTP数据而言,下面的代码对我有用。packagemainimport"net"import"fmt"im

go - 为从其他包声明的结构分配一个值

这是我的代码。我将我的结构OperatInfo提取到struct.go并想在worker.go的主包中使用这个结构。结构.gopackagebatchtypeOperatInfostruct{eventIdstringhallIdstringuserIdstringoperatingstringoperatingIDstringipstring}worker.gopackagemainimport("time""fmt""strconv""./kernel/api""./kernel/db""./batch/basic""./batch/struct")varoperatInfobat

go - 如何在 linux 而非 Mac/windows 上从编译中排除一个 go 库?

我用import"github.com/dontpanic92/wxGo/wx"在可以使用或不使用GUI运行的程序中。即你可以像这样运行它:./program--guitrue或./program--guifalse当在Linux上使用GUIfalse运行时,我想避免必须编译所有wxGo/wx。我如何将相同的代码提交到git,以便它可以在Mac或Linux上正常编译。即现在,当我在Linux上编译时,我必须注释掉对wxGo/wx的任何引用 最佳答案 如果你想在某些操作系统、架构、Go版本上构建特定的Go文件,或者如果在编译期间指定了

mongodb - 如何使用 Golang 从 Mongo GridFS 下载文件?

我正在尝试编写一个具有基本文件上传、下载功能的RestAPI。我能够很好地完成上传部分,但我很难从gridfs下载文件。有什么建议吗? 最佳答案 更新:我想我知道怎么做了。我很好奇是否有人有任何其他建议:这是我现在的样子:funcDownloadRecord(whttp.ResponseWriter,filenamestring)error{if!fileExists(filename){returnerrors.New("Filedoesn'texist.Nothingtodownload")}session:=sqlconnec

dictionary - 我如何从 map[string] MyStruct 转换为 map[string] MyInterface

当MyStruct实现MyInterface时,如何将map[string]MyStruct转换为map[string]MyInterface。typeMyInterfaceinterface{Say()string}varMyInterfaceMapmap[string]MyInterfacetypeMyStructstruct{Messagestring}func(myStruct*MyStruct)Say()string{returnmyStruct.Message}funcInit(){data:=[]byte(`{"greet":{"Message":"Hello"}}`)m

regex - 从正则表达式构造字符串

我试图找到一种方法来从具有给定interface{}数组的已编译*regexp.Regexp构造string数据.例如:re:=regexp.MustCompile(`(?P\w+)\s*(?P\d+)`)我想通过string和int数据从re中找到的结构构造一个string可以作为接口(interface){}接收。不知道如何在Go中做到这一点。请帮帮我。提前致谢。 最佳答案 这样的库,常被称为Xeger,存在于许多语言中,包括go。然而,这个叫做regen:这是一个从Go/RE2正则表达式生成随机字符串的工具。这是一个例子:$r

go - 从本地子目录导入包

我是新来的,所以我希望这不会被认为是愚蠢的!我当前的文件夹结构与此类似在models文件夹中,我有person.go。packagemodels//PersonstructtypePersonstruct{NamestringAgeintGenderstring}在main.go中,我喜欢导入models,这样我就可以使用person结构。packagemainimport"fmt"import"models"funcmain(){person=Person{Name:"Ali",Age:34,Gender:"Male"}fmt.Println("personis",person)}当

go - 创建一个函数来测试从接口(interface)编码/解码

我想创建一个简单的函数来测试编码/解码记录是否按预期工作。我只是在这个例子中使用JSON:packagetestimport("encoding/json""fmt""testing""reflect""github.com/stretchr/testify/require")funcCheckRoundTripJSON(t*testing.T,recordinterface{}){data,err:=json.Marshal(record)require.NoError(t,err)fmt.Println("Record:",record,"wasencodedto:",data,"

sql - 将查询结果从结构转换为另一个 Golang 包的字符串

我在网上和SO中搜索了一个解决方案,但没有找到适用于返回值的解决方案。这是一个简单的sql查询,其中包含我要返回的多行。不包括错误处理:funcFetch(querystring)(string){typeUserstruct{idstringnamestring}rows,err:=db.Query(query)users:=make([]*User,0)forrows.Next(){user:=new(User)err:=rows.Scan(&user.id,&user.name)users=append(users,user)}return(users)}编译时出现这个错误:ca