Questions tagged «go»

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

4
如何使用Go有效地下载大文件?
有没有一种使用Go下载大文件的方法,该方法会将内容直接存储到文件中,而不是将全部内容存储到内存中再写入文件?由于文件太大,因此在将其全部写入内存之前将其全部存储在内存中将耗尽所有内存。
106 go 


4
强制重新测试或禁用测试缓存
问题: 当我两次运行相同的go测试时,第二次运行根本没有完成。结果是第一次运行时的缓存结果。 PASS ok tester/apitests (cached) 链接 我已经检查了https://golang.org/cmd/go/#hdr-Testing_flags,但是没有cli标志用于此目的。 题: 是否有可能强制执行测试以始终运行测试而不缓存测试结果。
106 testing  go 

3
在Go中重定向子进程的stdout管道
我正在用Go编写程序,该程序执行类似程序的服务器(也就是Go)。现在,我想在启动父程序的终端窗口中获​​得子程序的标准输出。一种方法是使用cmd.Output()函数,但这仅在进程退出后才输出标准输出。(这是一个问题,因为这个类似于服务器的程序运行了很长时间,并且我想读取日志输出) 变量out是,type io.ReadCloser我不知道该如何使用它来完成任务,因此在该主题上我找不到任何有用的信息。 func main() { cmd := exec.Command("/path/to/my/child/program") out, err := cmd.StdoutPipe() if err != nil { fmt.Println(err) } err = cmd.Start() if err != nil { fmt.Println(err) } //fmt.Println(out) cmd.Wait() } 对代码的解释:取消注释该Println函数以获取要编译的代码,我知道这Println(out io.ReadCloser)不是有意义的函数。 (它产生输出&{3 |0 <nil> 0})只需两行即可编译代码。

2
转到界面字段
我熟悉一个事实,在Go中,接口定义功能而不是数据。您在接口中放置了一组方法,但是您无法指定实现该接口的任何内容所必需的任何字段。 例如: // Interface type Giver interface { Give() int64 } // One implementation type FiveGiver struct {} func (fg *FiveGiver) Give() int64 { return 5 } // Another implementation type VarGiver struct { number int64 } func (vg *VarGiver) Give() int64 { return vg.number } 现在我们可以使用该接口及其实现: // A function …
105 struct  interface  go 

7
如何执行文件系统扫描
我需要编写一个函数,当给定文件夹的路径时,该函数会扫描以该文件夹为根的文件。 然后,我需要在该文件夹中显示目录结构。 我知道该怎么做2(我将使用jstree在浏览器中显示它)。
104 file  go  directory 

4
:=的左侧没有新变量
这里发生了什么事? package main import "fmt" func main() { myArray :=[...]int{12,14,26} ; fmt.Println(myArray) myArray :=[...]int{11,12,14} //error pointing on this line fmt.Println(myArray) ; } 它抛出一个错误,说 no new variables on left side of := 我正在做的是将值重新分配给一个已经声明的变量。

10
在Go中使用分叉包导入
假设您有一个存储库,github.com/someone/repo然后将其分叉到github.com/you/repo。您想使用fork而不是主仓库,因此您需要 go get github.com/you/repo 现在,此存储库中的所有导入路径都将“断开”,这意味着,如果存储库中有多个通过绝对URL相互引用的包,则它们将引用源而不是派生。 有更好的方法手动将其克隆到正确的路径吗? git clone git@github.com:you/repo.git $GOPATH/src/github.com/someone/repo
104 go 

4
减去时间.Go中时间的持续时间
我有一个time.Time价值time.Now(),我想得到另一个正好是1个月前的时间。 我知道可以用time.Sub()(想要另一个time.Time)进行减法,但这将导致a,time.Duration而我反过来需要它。
104 go 

9
如果另有声明,如何做一线?
我可以像在php中那样在go(golang)中编写带有变量赋值的简单if-else语句吗?例如: $var = ( $a > $b )? $a: $b; 目前,我必须使用以下内容: var c int if a > b { c = a } else { c = b } 抱歉,如果此控制声明我不能记住名字,并且我无法在现场或通过Google搜索找到信息。:/

2
“ <类型>是接口的指针,而不是接口”的困惑
亲爱的开发人员, 我遇到了这个问题,对我来说似乎有点奇怪。看一下这段代码: package coreinterfaces type FilterInterface interface { Filter(s *string) bool } type FieldFilter struct { Key string Val string } func (ff *FieldFilter) Filter(s *string) bool { // Some code } type FilterMapInterface interface { AddFilter(f *FilterInterface) uuid.UUID RemoveFilter(i uuid.UUID) GetFilterByID(i uuid.UUID) *FilterInterface } type FilterMap struct { mutex …
104 pointers  go  interface 


2
Go等效于argv [0]?
如何在运行时获取自己的程序名称?Go / C / C ++的argv [0]等效于什么?对我来说,使用正确的名称生成用法很有用。 更新:添加了一些代码。 package main import ( "flag" "fmt" "os" ) func usage() { fmt.Fprintf(os.Stderr, "usage: myprog [inputfile]\n") flag.PrintDefaults() os.Exit(2) } func main() { flag.Usage = usage flag.Parse() args := flag.Args() if len(args) &lt; 1 { fmt.Println("Input file is missing."); os.Exit(1); } fmt.Printf("opening %s\n", args[0]); …
103 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.