关于go的最热门问题合集

lintao1999 · · 493 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

关于go的常见问题合集,有技术问题,上 bug200.com #### [如何在正则表达式中跨多行匹配任何字符?](https://bug200.com/post/159118) 例如,这个regex (.*)<FooBar> 将匹配: abcde<FooBar> 但是如何让它跨多行匹配呢? abcde fghij<FooBar> #### [将字节数组转换为字符串的最佳方法是什么?](https://bug200.com/post/14230145) 我需要阅读[100]byte把一堆string数据。 因为不是所有的stringS正好有100个字符长,是byte array被填充0S. 如果我转过身[100]byte到string通过:string(byteArray[:])尾矿0s显示为^@^@S. 在C中string将于终止0,所以我想知道什么是智能转移的最佳方式byte array到string在Golang。 #### [如何检查地图是否包含一个键在Go中?](https://bug200.com/post/2050391) 我知道我可以在地图M上迭代, for k, v := range m { ... } 寻找一把钥匙,但是有没有一种更有效的方法来测试一把钥匙在地图上的存在?谢谢。我找不到答案language spec. #### [如何将字符串分配给字节数组](https://bug200.com/post/8032170) 我要将字符串分配给字节数组: var arr [20]byte str := "abc" for k, v := range []byte(str) { arr[k] = byte(v) } 有其他方法吗? #### [Go中有foreach循环吗?](https://bug200.com/post/7782411) 有没有foreach用Go语言构建?我可以使用for? #### [如何在go中将int值转换为字符串?](https://bug200.com/post/10105935) i := 123 s := string(i) S是“E”,但我想要的是“123” 请告诉我怎样才能得到“123”。 在Java中,我可以这样做: String s = "ab" + "c" // s is "abc" 我怎么能concat有两条线吗? #### [如何在go中的post请求中发送JSON字符串](https://bug200.com/post/24455147) 我尝试使用apiary,并创建了一个通用模板,将JSON发送到模拟服务器,并具有以下代码: package main import ( "encoding/json" "fmt" "github.com/jmcvetta/napping" "log" "net/http" ) func main() { url := "http://restap #### [如何在Go中查找对象类型?](https://bug200.com/post/20170275) 如何在Go中找到对象的类型?在python中,我只使用typeof获取对象类型。同样,在Go中,有没有实现相同的方法? 下面是我要迭代的容器: for e := dlist.Front(); e != nil; e = e.Next() { lines := e.Value fmt.Printf(reflect.TypeOf(lines)) } 在本例中,我无法获取对象行的类型, #### [在go中逐行读取文件](https://bug200.com/post/8757389) 我找不到file.ReadLine功能在Go中。我可以想出如何快速地写一封信,但只是想知道我是否忽略了这里的一些东西。如何逐行读取文件? #### [如何使用go读/写文件?](https://bug200.com/post/1821811) 我一直在试着自己去学习,但我一直在尝试读写普通文件。 我可以走到inFile, _ := os.Open(INFILE, 0, 0),但实际上获取文件的内容是没有意义的,因为读取函数需要[]byte作为参数。 func (file *File) Read(b []byte) (n int, err Error) #### [遍历映射的所有键](https://bug200.com/post/1841443) 有没有办法在Go语言地图中获得所有键的列表?元素的数量由len()但是如果我有这样的地图: m := map[string]string{ "key1":"val1", "key2":"val2" }; 如何迭代所有键? #### [如何在go中编写多行字符串?](https://bug200.com/post/7933460) go是否有类似于python的多行字符串的内容: """line 1 line 2 line 3""" 如果不是,写跨越多行的字符串的首选方法是什么? #### [可选参数?](https://bug200.com/post/2032149) 可以使用可选参数吗?或者我可以只定义两个具有相同名称和不同数量参数的函数吗? #### [设置Go字符串的格式而不打印?](https://bug200.com/post/11123865) 有没有一种简单的方法来格式化Go中的字符串而不打印该字符串? 我能做到: bar := "bar" fmt.Printf("foo: %s", bar) 但我希望返回格式化的字符串,而不是打印,这样我可以进一步操作它。 我也可以做一些类似的事情: s := "foo: " + bar 但是,当格式字符串很复杂时,这就变得难以读取;当其中一个或多个部分不是字符串时,这就变得很麻烦,必须先进行转换 #### [没有gopath如何导入本地包?](https://bug200.com/post/17539407) 我已经用过GOPATH但就目前这个问题而言,我所面临的一切都无济于事。我希望能够创建特定于项目的包: myproject/ ├── binary1.go ├── binary2.go ├── package1.go └── package2.go 我试过多种方法,但我怎么才能package1.go在工作中binary1.go或binary2.go等等? 例如,我希望能够import "packa #### [如何从其PID中获取流程详细信息](https://bug200.com/post/9378021) 我维护了一个当前在我的系统(Linux)上运行的进程的pid列表,如果我能从这个pid中获得进程的详细信息,我会在golang中访问syscall.getrusage(),但是我没有得到想要的结果。 有人有相关的想法吗 #### [如何在Go[关闭]中处理配置](https://bug200.com/post/16465705) 我是新来的at-go编程人员,我想知道:处理go程序配置参数的首选方法是什么性质文件或伊尼其他情况下的文件? #### [如何在戈兰使用定制包?](https://bug200.com/post/15049903) 我正在尝试在Go中创建和使用自定义包。这可能是很明显的事情,但我找不到很多关于这方面的信息。基本上,我在同一个文件夹中有这两个文件: 百万富翁 package mylib type SomeType struct { } 主走 package main import ( "mylib" ) func main() { } 当我尝试go run main.go,我得到这个错误: #### [在go中测试空字符串的最佳方法是什么?](https://bug200.com/post/18594330) 对于测试非空字符串(在go中),哪种方法最好(更像idomatic)? if len(mystring) > 0 { } 或: if mystring != "" { } 或者别的什么? #### [从地图中获取关键点的切片](https://bug200.com/post/21362950) 在Go中,有没有更简单/更好的方法从地图中获取一个关键点? 目前我正在迭代映射并将键复制到一个切片: i := 0 keys := make([]int, len(mymap)) for k := range mymap { keys[i] = k i++ } #### [在go中将字符串转换为整型?](https://bug200.com/post/4278430) 我正在尝试转换从返回的字符串flag.Arg(n)对int. Go中的惯用方法是什么? #### [如何获取当前运行文件的目录?](https://bug200.com/post/18537257) 在我使用的NoDjs中__dirname. 在戈兰,这是什么等价物? 我在谷歌上找到了这篇文章http://andrewbrookins.com/tech/golang-get-directory-of-the-current-file/. 他用下面的代码 _, filename, _, _ := runtime.Caller(1) f, err := os.Open(path.Join(path #### [开始构建:“找不到包”(即使设置了gopath)](https://bug200.com/post/13214029) 尽管gopath设置得很好,但我还是找不到自己的包。我做错什么了?非常感谢! $ echo $GOROOT /usr/local/go $ echo $GOPATH /home/mitchell/go $ cat ~/main.go package main import "foobar" func main() { } $ cat /home/mitchell/go/src/foobar. #### [如何在戈兰得到JSON响应](https://bug200.com/post/17156371) 我正在尝试从Web读取JSON数据,但该代码返回空结果。我不知道我在这里做错了什么。 package main import "os" import "fmt" import "net/http" import "io/ioutil" import "encoding/json" type Tracks struct { Toptracks []Toptracks_info } ty #### [Gmail:530 5.5.1需要身份验证。了解更多](https://bug200.com/post/17227532) 此Go程序成功地从我的家庭计算机发送电子邮件,但在DigitalOcean上的虚拟服务器上收到以下错误: panic: 530 5.5.1 Authentication Required. Learn more at 代码如下: auth := smtp.PlainAuth("", "bjorkbjorksen@gmail.com", "PASSWORD", "smtp.gmail.com") #### [无法将数据(类型接口)转换为类型字符串:需要类型断言](https://bug200.com/post/14289256) 我刚开始玩这个notify包裹。 起初我有这样的代码: func doit(w http.ResponseWriter, r *http.Request) { notify.Post("my_event", "Hello World!") fmt.Fprint(w, "+OK") } 我想把换行符附加到Hello World!但不在函数中doit上面,因为那是很琐碎的,但是在ha #### [无法下载,$gopath未设置](https://bug200.com/post/20628918) 我想用安装json2csvgo get github.com/jehiah/json2csv但我收到这个错误: package github.com/jehiah/json2csv: cannot download, $GOPATH not set. For more details see: go help go path 如何在MacOS上解决这个问题有什么帮助吗? #### [将go结构转换为json](https://bug200.com/post/8270816) 我正在尝试使用json但我得到的只是{}. 我确信这是非常明显的事情,但我看不到。 package main import ( "fmt" "encoding/json" ) type User struct { name string } func main() { user := &User{name:"Frank"} b, err := #### [什么是比python&s http.server(或simplehttpserver)更快的替代方案?](https://bug200.com/post/12905426) 蟒蛇http.server(或simplehttpserver for python 2)是从命令行服务当前目录内容的一种很好的方法: python -m http.server 然而,就网络服务器而言,这是非常缓慢的… 它的行为就像是单线程的,并且在使用RequireJS加载JavaScriptAMD模块时偶尔会导致超时错误。加载一个没有图像的简单页面可能需要5到10秒。 有什么比这更方便的选 #### [Go中无检测](https://bug200.com/post/20240179) 我在Go中看到了很多检测nil的代码,如下所示: if err != nil { // handle the error } 但是,我有一个这样的结构: type Config struct { host string port float64 } config是config的一个实例,当我这样做时: if config == nil { } 有编译错误 #### [如何在go中获取当前时间戳?](https://bug200.com/post/5885486) 在go中获取当前时间戳并转换为字符串的最佳方法是什么?我需要日期和时间,例如,YYYYMMDDHHMMSS格式。 #### [将文本文件读取到字符串数组中(并写入)](https://bug200.com/post/5884154) 在字符串数组中读(写)一个文本文件的能力是我认为相当普遍的要求。当从一种语言开始时,它也非常有用,它消除了最初访问数据库的需要。戈兰有吗?例如 func ReadLines(sFileName string, iMinLines int) ([]string, bool) { 和 func WriteLines(saBuff[]string, sFilename string) (bool) { #### [如何在Ubuntu Precise中安装Go的当前版本](https://bug200.com/post/17480044) 运行sudo apt-get install golang-stable,我得到Go版本go1.0.3. 有什么安装方法吗go1.1.1? #### [golang将项目附加到切片](https://bug200.com/post/20195296) 为什么a保持不变?做append()生成新切片? package main import ( "fmt" ) var a = make([]int, 7, 8) func Test(slice []int) { slice = append(slice, 100) fmt.Println(slice) } func main() { for i := 0; #### [在Go&S HTTP包中,如何获取POST请求的查询字符串?](https://bug200.com/post/15407719) 我正在使用http包从开始处理后请求。如何从Request对象?我从官方文件中找不到答案。 #### [在go中列出目录](https://bug200.com/post/14668850) 我一直在试图找出如何在Go中简单地列出单个目录中的文件和文件夹。 我找到了filepath.Walk但它会自动进入子目录,我不想这样。我所有的其他搜索都没有找到更好的结果。 我确信这个功能是存在的,但是很难找到。如果有人知道我该去哪里,请告诉我。谢谢。 #### [将接口转换为int](https://bug200.com/post/18041334) 我试图从JSON中获取一个值并将其强制转换为int,但它不起作用,我不知道如何正确地执行它。 以下是错误消息: ...cannot convert val (type interface {}) to type int: need type assertion 代码: var f interface{} err = json.Unmarshal([]byte(jsonStr), #### [设置HTTP头](https://bug200.com/post/12830095) 我正试图在Go Web服务器中设置一个标题。我在用gorilla/mux和net/http包装。 我想设置Access-Control-Allow-Origin: *允许跨域Ajax。 这是我的通行密码: func saveHandler(w http.ResponseWriter, r *http.Request) { // do some stuff with the request data #### [如何拆分字符串并将其分配给golang中的变量?](https://bug200.com/post/16551354) 在python中,可以拆分字符串并将其分配给变量: ip, port = '127.0.0.1:5432'.split(':') 但在戈兰,这似乎不起作用: ip, port := strings.Split("127.0.0.1:5432", ":") // assignment count mismatch: 2 = 1 问题:如何拆分字符串并在一个步骤中分配值? #### [如何在指定的文件中运行测试用例?](https://bug200.com/post/16935965) 我的包测试用例分散在多个文件中,如果我运行go test <package_name>它运行包中的所有测试用例。 不过,没有必要运行所有这些程序。有没有方法为指定文件go test运行,以便它只运行文件中定义的测试用例? #### [如何编译由多个文件组成的GO程序?](https://bug200.com/post/10838469) 所以我有一个由三个文件组成的小程序,它们都属于同一个包(main),但是当我执行“go build main.go”时,构建不会成功。当它只是一个文件(main.go)时,一切都正常。现在我花了点力气来分离代码,看起来编译器找不到从main.go中取出并放入这两个其他文件中的内容(它们与main.go位于同一目录中)。导致“未定义的”类型“错误。 我读了一些关于设置gopath变量的内容,所以我尝 #### [如何将持续时间乘以整数?](https://bug200.com/post/17573190) 为了测试并发的goroutine,我在函数中添加了一行,以使返回所需的随机时间(最多一秒钟) time.Sleep(rand.Int31n(1000) * time.Millisecond) 但是当我编译时,我得到了这个错误 .\crawler.go:49:无效操作:rand.int31n(1000)*time.millisecond(不匹配的类型int32和time.duration) 有 #### [如何从正在运行的Docker容器读取文件和stdout](https://bug200.com/post/24621067) 为了从正在运行的Docker容器中读取文件和stdout,如何在主机中启动应用程序? 基本上我想这样做: docker start containerid ./myapp // This app will *somehow* have access files and stdout generated by the container I just stared. 我该怎么做呢?更具体地 #### [在go中将float64转换为int](https://bug200.com/post/8022389) 如何在go中将float64转换为int?我知道strconv包可以用于在字符串之间转换任何内容,但不能在非字符串的数据类型之间转换。我知道我可以用fmt.Sprintf将任何内容转换为字符串,然后strconv到我需要的数据类型,但是这个额外的转换看起来有点笨拙——有更好的方法吗? #### [歌朗随机数发生器如何正确播种](https://bug200.com/post/12321133) 我正在尝试在go中生成一个随机字符串,下面是我迄今为止编写的代码: package main import ( "bytes" "fmt" "math/rand" "time" ) func main() { fmt.Println(randomString(10)) } func randomString(l int) string { va #### [切片的最后一个元素](https://bug200.com/post/22535775) 什么是Go提取的最后一个元素的方法slice? var slice []int slice = append(slice, 2) slice = append(slice, 7) slice[len(slice)-1:][0] // Retrieves the last element 上面的解决方案是可行的,但看起来很尴尬。 #### [“无法识别的导入路径”with go get](https://bug200.com/post/20458796) 我想安装一个web.go但运行go get github.com/hoisie/web收益率 package bufio: unrecognized import path "bufio" package bytes: unrecognized import path "bytes" package crypto/rand: unrecognized import path "crypto/ran #### [函数能否在go中作为参数传递?](https://bug200.com/post/12655464) 在Java中,我可以做一些类似的事情。derp(new Runnable { public void run () { /* run this sometime later */ } })稍后在方法中“运行”代码。处理(匿名的内部类)是一种痛苦,但它是可以做到的。 Go是否有一些可以方便作为参数传入函数/回调的功能? #### [在go中提取子字符串](https://bug200.com/post/12311033) 我正在尝试从控制台读取整行(包括空白),然后处理它。使用bufio.readstring,新行字符与输入一起读取,因此我想出了以下代码来修剪新行字符: input,_:=src.ReadString('\n') inputFmt:=input[0:len(input)-2]+"" //Need to manually add end of string 有没有更惯用的方法?也就是说,是否已经有一 #### [声明常量数组](https://bug200.com/post/13137463) 我已经尝试过: const ascii = "abcdefghijklmnopqrstuvwxyz" const letter_goodness []float32 = { .0817,.0149,.0278,.0425,.1270,.0223,.0202, .0609,.0697,.0015,.0077,.0402,.0241,.0675, .0751,.0193,.0009,.0599,.0 #### [安装Go with BREW并运行GoTour](https://bug200.com/post/12843063) 我在跟踪http://tour.golang.org/直到第三步告诉你可以在你的系统上安装Gotour。 之后,我通过以下方式安装了BREW的Go语言: brew install hg brew install go 然后我下载了Gotour by: go get code.google.com/p/go-tour/gotour 当我试图启动Gotour时,它没有识别出命令: $ gotour #### [golang中是否有迭代整数范围的方法?](https://bug200.com/post/21950244) Golang的范围可以迭代地图和切片,但是我想知道是否有一种方法可以迭代一系列的数字,类似于这样 for i := range [1..10] { fmt.Println(i) } 或者有没有一种方法可以像ruby那样表示go中的整数范围? #### [如何将int改为int64?](https://bug200.com/post/13137365) 我试图在go中将一个整数转换成integer64,但我运气不好。有人知道一个简单的方法吗? #### [从结构中移除字段或将其隐藏在JSON响应中](https://bug200.com/post/17306358) 我在Go中创建了一个API,在被调用时执行查询,创建一个结构实例,然后将该结构编码为JSON,然后再发送回调用方。现在我想允许调用者通过传入“fields”get参数来选择他们想要返回的特定字段。 这意味着根据字段值,我的结构将更改。是否有任何方法可以从结构中移除字段?或者至少在JSON响应中动态隐藏它们?(注意:有时我有空值,所以json omitempty标记在这里不起作用)如果这两者都不可能 #### [字符串的零是什么?](https://bug200.com/post/12703243) func NewKey(c appengine.Context, kind, stringID string, intID int64, parent *Key) *Key 文件上说: new key创建一个新键。kind不能为空。一个或两个 StringID和IntId必须零. 如果两者都为零,则键 返回不完整。父级必须是完整键或零。 字符串的零是什么? 我试过0和nil我有错误,比如: #### [如何将整个文件读取为字符串变量](https://bug200.com/post/13514184) 我有很多小文件,我不想一行一行地读。 Go中是否有将整个文件读取为字符串变量的函数? #### [无法加载package:package.:没有可构建的go源文件](https://bug200.com/post/24095004) 以下是错误消息: % go get can't load package: package .: no buildable Go source files in /Users/7yan00 % echo $GOPATH /Users/7yan00/Golang 您将如何解决该错误? #### [如何使用go漂亮地打印JSON?](https://bug200.com/post/19038598) 有人知道在Go中漂亮打印JSON输出的简单方法吗? 股票http://golang.org/pkg/encoding/json/包似乎不包含此功能(编辑:是的,请看接受的答案)而且快速的谷歌不会发现任何明显的东西。 我要找的用途都是漂亮的打印结果json.Marshal并且只需从任何地方格式化一个充满JSON的字符串,这样就更容易出于调试目的进行读取。 #### [在go中对多个返回值执行转换/类型断言的惯用方法](https://bug200.com/post/11403050) 在go中转换多个返回值的惯用方法是什么? 你能在一行中完成它吗,或者你需要使用临时变量,比如我在下面的例子中所做的? package main import "fmt" func oneRet() interface{} { return "Hello" } func twoRet() (interface{}, error) { return "Hejsan", nil } #### [你怎么清除围棋中的一片?](https://bug200.com/post/16971741) 清除Go中切片的适当方法是什么? 这是我在go forums: // test.go package main import ( "fmt" ) func main() { letters := []string{"a", "b", "c", "d"} fmt.Println(cap(letters)) fmt.Println(len(letters)) #### [如果还有其他语句,怎么做一行?](https://bug200.com/post/26545883) 我可以在go(golang)中编写一个带有变量赋值的if-else语句吗,就像在php中那样(例如): $var = ( $a > $b )? $a: $b; 目前我必须使用以下方法: var c int if a > b { c = a } else { c = b } 很抱歉,如果这个控制语句和在站点和谷歌搜索中找不到信息,我就记不起它的名字了。: #### [使用“http.newrequest(…)”生成URL编码的post请求](https://bug200.com/post/19253469) 我想向API发出一个post请求,将数据作为application/x-www-form-urlencoded内容类型。由于我需要管理请求头,因此使用http.NewRequest(method, urlStr string, body io.Reader)创建请求的方法。对于这个POST请求,我将数据查询附加到URL,并将正文保留为空,如下所示: package main import ( #### [交叉编译继续OSX?](https://bug200.com/post/12168873) 我正试图在OSX上交叉编译一个go应用程序来构建Windows和Linux的二进制文件。我把网上能找到的东西都读了。我发现的最接近的例子已经发表(除了许多关于Go Nuts邮件列表的未完成讨论之外): http://solovyov.net/en/2012/03/09/cross-compiling-go/ 但它在我的安装上不起作用。我已经走了1.0.2。因为1.0.2是最近的版本,所以在我看来, #### [如何使用错误证书执行HTTPS请求?](https://bug200.com/post/12122159) 说我想得到https://golang.org编程。当前golang.org(ssl)有一个错误的证书,该证书颁发给*.appspot.com所以当我运行这个时: package main import ( "log" "net/http" ) func main() { _, err := http.Get("https://golang.org/") if #### [在记事本+中添加用户定义的语言](https://bug200.com/post/12574121) 我正在尝试在记事本+中添加Go编程语言的语法插件。 http://docs.notepad-plus-plus.org/index.php/User_Defined_Language_Files#How_to_install_user_defined_language_files 具有用于此类用户定义语言的存储库。我下载并解压缩了go文件,其中包含一个自述文件、一个用户定义的lang_go.xml #### [如何阻止Goroutine](https://bug200.com/post/6807590) 我有一个goroutine,它调用一个方法,并在通道上传递返回值: ch := make(chan int, 100) go func(){ for { ch <- do_stuff() } }() 我怎样才能阻止这样的暴行? #### [Golang的日期/时间比较](https://bug200.com/post/20924303) 在歌朗进行日期比较有什么选择吗?我必须独立地根据日期和时间对数据进行排序。所以我可以允许一个对象发生在一个日期范围内,只要它也发生在一个时间范围内。在这个模型中,我不能简单地选择最早的日期、最早的时间/最晚的日期、最晚的时间和unix()秒来比较它们。我真的很感激你的建议。 最后,我编写了一个时间分析字符串比较模块来检查时间是否在范围内。然而,这并不顺利;我有一些悬而未决的问题。我会把它贴在这里只 #### [go,golang,formatfoat:将浮点数转换为字符串[重复]](https://bug200.com/post/19101419) 这个问题已经有了答案: How to format floating point numbers into a string using Go 1答 #### [从标准输入中读取整数](https://bug200.com/post/3751429) 我怎么用fmt.ScanfGo中的函数从标准输入中获取整数输入? 如果不能用fmt.Scanf,读取单个整数的最佳方法是什么? #### [如何在C++中使用GO?](https://bug200.com/post/1713214) 在新的Go语言,我怎么称呼C++代码?换句话说,我如何包装我的C++类并在GO中使用它们? #### [是否可以捕获ctrl+c信号并以“延迟”的方式运行清除功能?](https://bug200.com/post/11268943) 我想捕捉CTRL+C(SIGINT)从控制台发送的信号,打印出部分运行总计。 这在戈兰有可能吗? 注意:当我第一次发布这个问题时,我很困惑CTRL+C存在SIGTERM而不是SIGINT. #### [如何在运行时检查Go语言中的变量类型](https://bug200.com/post/6996704) 我有几个这样声明的C函数 CURLcode curl_wrapper_easy_setopt_long(CURL* curl, CURLoption option, long param); CURLcode curl_wrapper_easy_setopt_str(CURL* curl, CURLoption option, char* param); 我想把它们作为一个整体暴露出来 func #### [如何在HTTP GET请求中设置头?](https://bug200.com/post/12864302) 我正在执行一个简单的HTTP GET IN GO: client := &http.Client{} req, _ := http.NewRequest("GET", url, nil) res, _ := client.Do(req) 但是我无法在doc谢谢 #### [如何确定接口的“实际”类型?](https://bug200.com/post/6372474) 我没有找到一个好的资源来使用interface{}类型。例如 package main import "fmt" func weirdFunc(i int) interface{} { if i == 0 { return "zero" } return i } func main() { var i = 5 var w = weirdF #### [go/golang将日志写入文件](https://bug200.com/post/19965795) 我在和戈兰写日志文件。 我试过几种方法,但都失败了。这就是我所尝试的: func TestLogging(t *testing.T) { if !FileExists("logfile") { CreateFile("logfile") } f, err := os.Open("logfile") if err != nil { t. #### [如何在戈兰进行文件系统扫描?](https://bug200.com/post/6608873) 我需要编写一个函数,当给定文件夹的路径时, 扫描该文件夹中的根文件。 然后我需要在那个文件夹中显示目录结构。 我知道如何做2(我将使用JStree在浏览器中显示它)。 请帮我写第1部分,比如从哪里开始写这样的 在GO中起作用。 #### [golang中的[]字符串和…字符串有什么区别?](https://bug200.com/post/12907653) 围棋语言 []string字符串数组 我们也使用...string作为参数 区别是什么? 函数定义: func f(args ...string) {} 我可以这样调用这个函数吗? args := []string{"a", "b"} f(args) #### [如何获取字符串中的字符数?](https://bug200.com/post/12668681) 如何在go中获取字符串的字符数? 例如,如果我有一个字符串"hello"方法应该返回5. 我看到了len(str)返回字节数而不是字符数,所以len("£")返回2而不是1,因为英镑是用两个UTF-8字节编码的。 #### [如何在golang结构中设置和获取字段?](https://bug200.com/post/11810218) 创建这样的结构后: type Foo struct { name string } func (f Foo) SetName(name string){ f.name=name } func (f Foo) GetName string (){ return f.name } 如何创建foo的新实例并设置和获取名称? 我尝试了以下方法: p:=new(Fo #### [如何在go中发送post请求?](https://bug200.com/post/24493116) 我正试图提出一个帖子请求,但我做不到。另一边什么也没收到。 这就是它应该如何工作的吗?我知道PostForm但是我想我不能用它,因为它不能用httputil对吧? hc := http.Client{} req, err := http.NewRequest("POST", APIURL, nil) form := url.Values{} form.Add("ln", c.ln) form.A #### [go中的空值](https://bug200.com/post/4217864) 如何在go中表示“空”值? type Node struct { next *Node data interface{} } 我想说 return &Node{ data: NULL, next: NULL } #### [在戈兰,有没有一种每隔一段时间做重复性工作的方法?](https://bug200.com/post/16466320) 有没有一种方法可以在go中执行重复的后台任务?我在想Timer.schedule(task, delay, period)在Java中。我知道我可以用Goroutine和Time.sleep()但是我想要一些容易停下来的东西。 这是我得到的,但在我看来很难看。有更干净/更好的方法吗? func oneWay() { var f func() var t *time.Timer #### [如何在golang中设置http.get()请求的超时?](https://bug200.com/post/16895294) 我在Go中创建了一个URL获取器,并有一个要获取的URL列表。我发送http.Get()请求每个URL并获取其响应。 resp,fetch_err := http.Get(url) 如何为每个GET请求设置自定义超时?(默认时间很长,这会使我的回迁器非常慢。)我希望回迁器有一个大约40-45秒的超时,在此之后它将返回“请求超时”,并转到下一个URL。 我怎样才能做到这一点? #### [在模板中迭代映射](https://bug200.com/post/21302520) 我正在展示一个健身课程列表(瑜伽、普拉提等)。每种类型的课程都有几个课程,所以我想把所有的瑜伽课程和普拉提课程都分组,等等。 我做这个函数是为了取一个切片并绘制它的地图 func groupClasses(classes []entities.Class) map[string][]entities.Class { classMap := make(map[string][]entitie #### [sync.waitgroup示例正确吗?](https://bug200.com/post/19208725) 这个例子的用法是sync.WaitGroup对的?它给出了预期的结果,但我不确定wg.Add(4)以及wg.Done(). 一次添加四个goroutine是否有意义wg.Add()? http://play.golang.org/p/ecvYHiie0P package main import ( "fmt" "sync" "time" ) func dosomethi #### [在GO编程中如何从[]字节转换为int](https://bug200.com/post/11184336) 我需要通过TCP创建一个客户机-服务器示例。在客户端,我读取了2个数字,然后将它们发送到服务器。我面临的问题是我不能从[]byte到int,因为通信只接受类型为的数据[]byte. 有转换的方法吗[]byte到int或者我可以发送int到服务器? 一些示例代码将非常感谢。 谢谢。 #### [在Go中删除地图[键]?](https://bug200.com/post/1736014) 我有一张地图: var sessions = map[string] chan int{} 如何删除sessions[key]?我试过: sessions[key] = nil,false; 那不管用。 更新(2011年11月): 删除映射项的特殊语法将在中删除。Go version 1: Go 1将删除特殊地图分配并引入新的内置功能,delete:delete(m, x)将删除表达式检 #### [将go map转换为json](https://bug200.com/post/24652775) 我试图将我的go映射转换为json字符串,encoding/json封送,但它导致空字符串。 这是我的代码: package main import ( "encoding/json" "fmt" ) type Foo struct { Number int json:"number"我的输出是: Title string json:"title" #### [如何检查空结构?](https://bug200.com/post/28447297) 我定义了一个结构… type Session struct { playerId string beehive string timestamp time.Time } 有时我会给它分配一个空会话(因为不可能为零) session = Session{}; 然后我要检查,如果它是空的: if session == Session{} { // do stuff #### [错误“can&39;t load package:package my prog:found packages my prog and main””](https://bug200.com/post/14416275) 在我的路径中,我有这样的东西: /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_ #### [建议使用什么方式从Go连接到MySQL?](https://bug200.com/post/11353679) 我正在寻找一个可靠的解决方案从Go连接到MySQL数据库。我在周围见过一些库,但是很难确定完整性和当前维护的不同状态。我没有复杂的需求,但是我想知道人们依赖什么,或者什么是连接到MySQL的最标准的解决方案。 #### [如何找出切片中的元素位置?](https://bug200.com/post/8307478) 如何确定切片中元素的位置? 我需要如下的东西: type intSlice []int func (slice intSlice) pos(value int) int { for p, v := range slice { if (v == value) { return p } } return -1 } #### [Golang应用程序自动生成版本控制](https://bug200.com/post/11354518) 每次编译Go应用程序时,是否可以自动增加次要版本号? 我想在我的程序中设置一个版本号,带有一个自动增量部分: $ myapp -version MyApp version 0.5.132 0.5是我设置的版本号,132是一个每次编译二进制文件时自动递增的值。 这是可行的吗? #### [将整数转换为字节数组](https://bug200.com/post/16888357) 我有一个函数,它接收[]byte但我所拥有的是int,进行这种转换的最佳方法是什么? err = a.Write([]byte(myInt)) 我想我可以走很远的路,把它变成一个字符串,然后把它放进字节,但听起来很难看,我想还有更好的方法可以做到。 #### [go中的toString()函数](https://bug200.com/post/13247644) 这个strings.Join函数只接受字符串切片: s := []string{"foo", "bar", "baz"} fmt.Println(strings.Join(s, ", ")) 但如果能够传递实现ToString()功能。 type ToStringConverter interface { ToString() string } 在Go中是否有类似的东西,或者我需要装饰 #### [为什么我不能用golang中的“copy()”复制一个切片?](https://bug200.com/post/30182538) 我需要在Go中制作一份切片的副本,并阅读文档copy功能由我决定。 copy内置函数将元素从源切片复制到 目标切片。(在特殊情况下,它还将从 字符串到字节片。)源和目标可能重叠。 copy返回复制的元素数,这是 长度(SRC)和长度(DST)。 但当我这样做 arr := []int{1, 2, 3} tmp := []int{} copy(tmp, arr) fmt.Println(tmp) #### [gobin未设置:无法运行go安装](https://bug200.com/post/25216765) 我正在尝试为main.go文件安装自定义包。但是,当我跑步时 go install custom.go 我有这个错误 go install: no install location for .go files listed on command line (GOBIN not set) 我如何设置戈宾? #### [如何运行主包中包含多个文件的项目?](https://bug200.com/post/28081486) 我的主包中目前只有一个文件,名为main.go. 我如何拆分main.go在多个文件中,不创建单独的包,因为代码不可重用。 我想要这样的目录结构: $ ls foo main.go bar.go bar.go package main import "fmt" func Bar() { fmt.Println("Bar") } 然后在main.go package main f #### [歌朗:如何读取文本文件?[复制品]](https://bug200.com/post/36111777) 这个问题已经有了答案: How can I read a whole file into a string variable 4答 #### [遍历go中结构的字段](https://bug200.com/post/18926303) 基本上,迭代struct是这样的: type Example struct { a_number uint32 a_string string } //... r := &Example{(2 << 31) - 1, "...."}: for _, d:= range []interface{}{ r.a_number, r.a_string, } {

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

493 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传