Tag:

runtime.Gosched到底做了什么?

在Tour 1.5网站发布之前的版本中 ,有一段代码看起来像这样。 package main import ( "fmt" "runtime" ) func say(s string) { for i := 0; i < 5; i++ { runtime.Gosched() fmt.Println(s) } } func main() { go say("world") say("hello") } 输出如下所示: hello world hello world hello world hello world hello 什么是困扰我的是,当runtime.Gosched()被删除,程序不再打印“世界”。 hello hello hello hello hello 为什么? runtime.Gosched()如何影响执行?

你如何得到一个Golang程序来打印刚才调用的错误的行号?

我试图用log.Fatal在我的Golang程序中抛出错误,但是, log.Fatal也不打印log.Fatal运行的log.Fatal行。 有没有办法获得行号为log.Fatal? 即抛出错误时有没有办法获得行号? 我试图谷歌这一点,但不确定如何。 我能得到的最好的东西是打印堆栈跟踪 ,我认为这很好,但可能会有点太多。 我也不想编写debug.PrintStack()每次我需要行号,我只是感到奇怪,没有任何内置函数为这个像log.FatalStackTrace()或不是服装的东西。 另外,我不想做自己的debugging/error handling的原因是因为我不想让人们学习如何使用我的特殊服装处理代码。 我只是想要一些标准,以便人们可以稍后阅读我的代码,并像 “啊,好吧,所以它抛出一个错误,做X …” 越less的人必须了解我的代码越好:)

如何在Golang中获得JSON响应

我试图从Web读取JSON数据,但该代码返回空结果。 我不确定我在这里做错了什么。 package main import "os" import "fmt" import "net/http" import "io/ioutil" import "encoding/json" type Tracks struct { Toptracks []Toptracks_info } type Toptracks_info struct { Track []Track_info Attr []Attr_info } type Track_info struct { Name string Duration string Listeners string Mbid string Url string Streamable []Streamable_info Artist []Artist_info Attr []Track_attr_info } type Attr_info struct { […]

无法将string转换为 interface {}

我写了一些代码,我需要它来捕捉参数,并通过fmt.Println传递它们 (我想要它的默认行为,写空格分隔参数,然后换行符)。 然而,它需要[]interface {}但是flag.Args()返回一个[]string 。 这是代码示例: package main import ( "fmt" "flag" ) func main() { flag.Parse() fmt.Println(flag.Args()…) } 这将返回以下错误: ./example.go:10: cannot use args (type []string) as type []interface {} in function argument 这是一个错误? 不应该fmt.Println采取任何arrays? 顺便说一句,我也试图做到这一点: var args = []interface{}(flag.Args()) 但我得到以下错误: cannot convert flag.Args() (type []string) to type []interface {} 有没有“去”的方法来解决这个问题?

在Go中提取子string

我试图从控制台(包括空白)读整行,然后处理它。 使用bufio.ReadString,换行符与input一起被读取,所以我想出了以下代码来修剪换行符: input,_:=src.ReadString('\n') inputFmt:=input[0:len(input)-2]+"" //Need to manually add end of string 有没有更习惯的方式来做到这一点? 也就是说,在为你提取子string时,是否已经有一个库负责结束空字节? (是的,我知道已经有一种方法可以在没有换行字符的情况下读取一行,但是我更喜欢string操作。)

将接口{}转换为Golang中的int

我是新来的Golang,我试图从一个JSON获得一个值,并将其转换为int,但它不起作用。 不知道如何正确地做到这一点。 这是错误消息: …cannot convert val (type interface {}) to type int: need type assertion 和代码: var f interface{} err = json.Unmarshal([]byte(jsonStr), &f) if err != nil { utility.CreateErrorResponse(w, "Error: failed to parse JSON data.") return } m := f.(map[string]interface{}) val, ok := m["area_id"] if !ok { utility.CreateErrorResponse(w, "Error: Area ID is missing from submitted […]

获取用户的主目录

以下是获取正在运行的用户主目录的最佳方式吗? 还是有一个特定的function,我发了? os.Getenv("HOME") 如果以上是正确的,有没有人碰巧知道这种方法是否可以在非Linux平台上工作,例如Windows?

如何减less编译的文件大小?

让我们比较一下c:Hello_world.c: #include<stdio.h> int main(){ printf("Hello world!"); } Hello_world.go: package main import "fmt" func main(){ fmt.Printf("Hello world!") } 编译两者: $gcc Hello_world.c -o Hello_c $8g Hello_world.go -o Hello_go.8 $8l Hello_go.8 -o Hello_go 还有,这是什么? $ls -ls … 5,4K 2010-10-05 11:09 Hello_c … 991K 2010-10-05 11:17 Hello_go 约1Mb你好,世界。 你在跟我开玩笑吗? 我做错了什么? (只有Hello_go – > 893K)

Go中inttypes的最大值

如何指定unsigned整数types可表示的最大值? 我想知道如何在下面的循环中初始化min ,从一些结构体中传递计算最小和最大长度。 var minLen uint = ??? var maxLen uint = 0 for _, thing := range sliceOfThings { if minLen > thing.minLen { minLen = n } if maxLen < thing.maxLen { maxLen = n } } if minLen > maxLen { // If there are no values, clamp min at 0 so […]

GOBIN没有设置:无法运行去安装

我正在尝试为我的main.go文件安装我的自定义软件包。 但是,当我跑了 go install custom.go 我得到这个错误 go install: no install location for .go files listed on command line (GOBIN not set) 我如何设置GOBIN?