Questions tagged «go»

Go是一种开源编程语言。它是静态类型的,具有从C松散派生的语法,添加了自动内存管理,类型安全性,一些动态类型输入功能,其他内置类型,例如可变长度数组(称为slices)和键值映射,以及大型标准库。

1
为什么我应该使用log.Println而不是fmt.Println?
从log.go(执行日志包): 167 // Println calls l.Output to print to the logger. 168 // Arguments are handled in the manner of fmt.Println. 169 func (l *Logger) Println(v ...interface{}) { l.Output(2, fmt.Sprintln(v...)) } log.Println只是一个函数包装器fmt.Sprintln,为什么我要用它代替fmt.Printlnor fmt.Sprintln? 有实际原因吗?
76 logging  go 

7
服务器在SASL身份验证步骤上返回错误:身份验证失败
以下是我从GoLang获得的MongoDB连接拨号。但是它返回一个紧急消息“ SASL身份验证步骤服务器返回错误:身份验证失败。 ”。我的用户名,密码,hostAddrs和dbName是正确的。我在这里想念什么? dbName: = os.Getenv("ENV_DBNAME") userName: = os.Getenv("ENV_DBUSER") password: = os.Getenv("ENV_DBPASS") dbHost: = os.Getenv("ENV_DBHOST") mongoDialInfo: = & mgo.DialInfo { Addrs: [] string { dbHost }, Database: dbName, Username: userName, Password: password, Timeout: 60 * time.Second, } sess, err: = mgo.DialWithInfo(mongoDialInfo) if (err != nil) { panic(err) }

5
从http.Request获取客户端IP地址的正确方法
从中获取所有客户端IP地址的正确方法是http.Request什么?在PHP其中,我应该检查很多变量。Go上也一样吗? 我发现的一个是: req.RemoteAddr 并且请求区分大小写吗?例如x-forwarded-for与X-Forwarded-For和相同X-FORWARDED-FOR吗?(来自req.Header.Get("X-FORWARDED-FOR"))
76 http  go  ip 

5
如何退出执行延迟呼叫的go程序?
我需要用来defer释放使用C库手动创建的分配,但os.Exit在某些时候我还需要处于非0状态。棘手的部分是os.Exit跳过任何延迟的指令: package main import "fmt" import "os" func main() { // `defer`s will _not_ be run when using `os.Exit`, so // this `fmt.Println` will never be called. defer fmt.Println("!") // sometimes ones might use defer to do critical operations // like close a database, remove a lock or free memory …
76 go  exit  deferred 


3
通过名称访问结构属性
这是一个不起作用的简单go程序: package main import "fmt" type Vertex struct { X int Y int } func main() { v := Vertex{1, 2} fmt.Println(getProperty(&v, "X")) } func getProperty(v *Vertex, property string) (string) { return v[property] } 错误: prog.go:18:无效的操作:v [属性](*顶点类型的索引) 我想要的是使用名称访问Vertex X属性。如果我这样做,v.X它会起作用,但v["X"]不会。 有人可以告诉我如何进行这项工作吗?
76 go  go-reflect 

3
Go中的结构初始化数组
我是Go的新手。这个问题使我发疯。您如何在Go中初始化结构数组? type opt struct { shortnm char longnm, help string needArg bool } const basename_opts []opt { opt { shortnm: 'a', longnm: "multiple", needArg: false, help: "Usage for a"} }, opt { shortnm: 'b', longnm: "b-option", needArg: false, help: "Usage for b"} } 编译器表示希望;在之后[]opt。 我应该在哪里把大括号{初始化结构数组?
76 arrays  struct  go 

5
如何从其pid获取过程详细信息
我从现在开始维护了我的系统(Linux)上当前正在运行的进程的pids列表,如果我可以从此pid中获取进程详细信息,那我就很高兴了,我已经在golang中通过syscall.Getrusage()了,但是我没有得到预期的结果。有人有相关的想法吗
76 go 

3
错误“无法加载软件包:软件包my_prog:找到软件包my_prog和main”
在我的GOPATH中,我有类似以下内容: /bin/ /pkg/ /src/ /src/my_prog/ /src/my_prog/main.go /src/my_prog/d_interface.go /src/my_prog/d_struct_that_implements_the_interface.go 在main.go我package main,在d_interface.go和d_struct_that_implements_the_interface.go我有package my_prog。 当我尝试go build my_prog出现以下错误时: can't load package: package my_prog: found packages my_prog (d_interface.go) and main (main.go) in C:\dev\Code\Go\src\my_prog 这是否意味着任何属于的文件都package main应该放在其自己的文件夹中?如果是这样,原因是什么?
75 go 

6
http.HandleFunc模式中的通配符
在Go(语言)中注册处理程序时,是否可以在模式中指定通配符? 例如: http.HandleFunc("/groups/*/people", peopleInGroupHandler) 其中*可以是任何有效的URL字符串。还是唯一的解决方案是/groups从处理程序(peopleInGroupHandler)函数内部匹配并找出其余部分?
75 regex  go 

6
如何在Go中传递多个命令?
如何在Go中将多个外部命令传递到一起?我已经试过了这段代码,但是看到一条错误消息exit status 1。 package main import ( "io" "log" "os" "os/exec" ) func main() { c1 := exec.Command("ls") stdout1, err := c1.StdoutPipe() if err != nil { log.Fatal(err) } if err = c1.Start(); err != nil { log.Fatal(err) } if err = c1.Wait(); err != nil { log.Fatal(err) } c2 …
75 go  pipe 

2
投射回更专业的界面
我正在写游戏。在C ++中,我会将所有实体类存储在BaseEntity类的数组中。如果一个实体需要在世界范围内移动,它将是一个PhysEntity,它是从BaseEntity派生而来的,但具有附加的方法。我试图模仿这是去: package main type Entity interface { a() string } type PhysEntity interface { Entity b() string } type BaseEntity struct { } func (e *BaseEntity) a() string { return "Hello " } type BasePhysEntity struct { BaseEntity } func (e *BasePhysEntity) b() string { return " World!" } …
74 go 

3
JSON和处理未导出的字段
是否存在技术原因,为什么编码/ json不包含未导出的字段?如果不是这样,这是一个任意决定,即使未导出,是否还会有其他后门选项(例如“ +”)包括在内? 要求导出客户端代码以获取此功能感到很不幸,尤其是在小写字母提供封装或封送结构的决定比其设计晚得多的情况下。 人们如何处理这个问题?只是出口一切? 另外,不导出字段名称会使遵循建议的惯用法变得困难。我认为,如果结构X具有字段Y,则不能具有访问器方法Y()。如果要提供对Y的接口访问权限,则必须为getter命名一个新名称,根据http://golang.org/doc/effective_go.html#Getters,无论您得到什么,都是不习惯的
74 json  go 

2
Golang将字符串转换为int64
我想将字符串转换为int64。我从strconv包装中发现的是Atoi功能。似乎将字符串转换为int并返回它: // Atoi is shorthand for ParseInt(s, 10, 0). func Atoi(s string) (i int, err error) { i64, err := ParseInt(s, 10, 0) return int(i64), err } ParseInt实际上返回一个int64: func ParseInt(s string, base int, bitSize int) (i int64, err error){ //... } 因此,如果我想从字符串中获取int64,应该避免使用Atoi,而是使用ParseInt吗?还是在某处隐藏了Atio64?
74 string  go  int64 

6
在整个源代码树上进行fmt
我有一个项目目前正在组织这样的事情: 〜/代码/去 /箱 /公斤 / src /proj/main.go /some_package/package.go /some_other_package/some_other_package.go 现在,如果我想go fmt在整个项目中使用该工具,似乎唯一的方法就是对项目源代码树中的每个目录分别进行操作: go fmt proj go fmt proj/package go fmt proj/some_other_package 有没有办法告诉fmt命令在整个源代码树上运行?
74 go 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.