草庐IT

go - 我怎么能在编译时出错,而不是运行时。例如 : regexp. 必须编译

我正在编写golang程序并使用函数regexp.MustComplile。但它可能在你不知道的某个时候panic就像regexp.MustCompile("ExpressionsJohn.Smithwillcausepanicbutyoudon'tknown").我希望在编译期间出错,而不是在运行时出错。有没有办法让那个在编译时报错?感谢您的帮助 最佳答案 regexp.MustCompile()是一个只能在运行时运行的函数,因此使用它不会出现编译时错误。您最多可以做的是从包init()函数中调用它(或在全局变量初始化中使用它),

在没有 switch 语句的情况下在运行时选择实现

我想使用提供的字符串在运行时选择接口(interface)的实现。我不想使用switch语句-代码应该是通用的,并且可以与实现接口(interface)的任何新结构一起使用而无需修改(打开/关闭)。假设我有以下结构:typeFooerinterface{Foo()}typeAstruct{}func(_*A)Foo(){fmt.Println("CallingA")}typeBstruct{}func(_*B)Foo(){fmt.Println("CallingB")}typeCstruct{}func(_*C)Foo(){fmt.Println("CallingC")}然后,我想做类

go - 如何在运行时更改变量类型

这个问题在这里已经有了答案:Howtodynamicallychangetypedefinitioningolang?(1个回答)关闭9个月前。我想知道是否可以在运行时改变变量的类型,例如:packagemainimport"github.com/fatih/structs"typeTstruct{MyFieldbool}funcmain(){fakeVariable:=""s:=structs.New(T{})for_,field:=ranges.Fields(){field.Set(fakeVariable)}}由于MyField是bool值,我想将fakeVariable更改为b

http - Golang 创建动态函数(在运行时)

我需要一些帮助来开发一个网络服务器。我从http://golang.org/doc/articles/wiki/中获取了初始代码,特别是这个例子:funchandler(whttp.ResponseWriter,r*http.Request){fmt.Fprintf(w,"Hithere,Ilove%s!",r.URL.Path[1:])}funcmain(){http.HandleFunc("/",handler)http.ListenAndServe(":8080",nil)}这段代码非常简单易懂,因为它所做的只是将发送到“localhost”的get请求重定向到输出html的处理

go - 通过 Supervisor 运行时奇怪的行为 Golang 应用程序崩溃

你好,每次我通过主管运行我的Go应用程序时,我的Go应用程序总是崩溃并重新启动,但是当我在终端上运行它时,它正在运行而没有崩溃,我不知道我从哪里开始或者我应该搜索什么帮助或提示从什么开始?P.S:日志总是空的编辑:它运行了1或2分钟并崩溃,但没有立即崩溃 最佳答案 我有几个golang服务器在supervisord下运行得很好......它可能是一些权限问题......在你的主管配置文件中替换启动你的golang二进制文件的完整路径以访问这个shell脚本#!/bin/bashforiin{1..3};doechohereIamin

go - 如何在运行时使用从配置文件读取的值初始化全局变量

我正在尝试使用在运行时从配置文件中读取的间隔值来初始化全局变量。配置文件包含一组键值对。作为init()函数的一部分,使用yaml解析器解析值并将其存储在结构中。packagemainimport("fmt""io/ioutil""time"yaml"gopkg.in/yaml.v2")funcinit(){PopulateConfig("./test.config")}varConfConfigvarInterval=time.Second*Conf.IntervaltypeConfigstruct{Portstring`yaml:"port"`Intervaltime.Durati

multithreading - Go运行时使用的线程数

Go运行时(调度程序、垃圾收集器等)可以使用多少个线程?例如,如果GOMAXPROCS是10,那么运行时将使用多少内核线程?编辑:我正在阅读therationale在Go1.5中将GOMAXPROCS更改为runtime.NumCPU()。有一句话声称“由于运行时的并行性,尤其是垃圾收集器,单goroutine程序的性能可以通过提高GOMAXPROCS来提高。”我真正的问题是:如果我有一个在具有CPU配额的Docker容器中运行的单goroutine程序,为了获得最佳性能,我需要的最少逻辑处理器数量是多少? 最佳答案 没有直接的相关

http - Golang 在服务器运行时获得 404

我正在尝试按照教程使用Golang和路由包Gorilla/mux运行一个基本的网络应用程序。服务器运行正常,但无论我在浏览器中输入什么,它都拒绝找到index.html文件,总是返回404。代码如下:主.gopackagemainimport("database/sql""fmt""net/http""github.com/gorilla/mux"_"github.com/lib/pq")const(host="localhost"port=5432user="postgres"password="0102"dbname="bird_encyclopaedia")funcnewRout

go - 惯用的 Golang - 可读性与运行时内存保护

鉴于这两个选项(如我所见,请随时启发我),例如,在检查两个字符串的相等性时,我想知道它是否是Goto中的首选/惯用:将两个字符串赋值给内存中的变量,例如:varthing01:=strings.ToLower(strings.Replace(line,"\"","",-1))[:lenEval]varthing02:=strings.Join(p.FieldsOrder[:p.CheckNHeaders],string(p.Delimiter))ifthing01==thing02{//dostuff...}或ifstrings.ToLower(strings.Replace(line

linux - 我怎样才能在运行时 golang 应用程序中获得根级访问/权限?

下面的命令将创建一个用户,但它会询问sudo密码。cmd:="sudo/usr/sbin/useradd"+"-m-d"+home_dir+"-s"+preferredShell+"-g"+usrLoginName+""+usrLoginNamecmdStatus,err:=exec.Command("bash","-c",cmd).Output()如何在没有sudo的情况下执行上述命令或如何为我的golang应用程序提供根级别权限?如何解决? 最佳答案 使用sudo运行您的golang应用程序。