Questions tagged «go»

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

1
通道中的元素数
使用缓冲通道,如何测量通道中有多少个元素?例如,我正在这样创建和发送频道: send_ch := make(chan []byte, 100) // code send_ch <- msg 我想衡量有多少封邮件都在通道send_ch。 我知道由于并发,该度量将不准确,因为在度量和操作之间可能会发生先发制人(例如,在此视频中讨论的Google I / O 2012-Go并发模式)。我将使用它在生产者和消费者之间进行流控制,即,一旦我通过了较高的水印,就更改了某些行为,直到我通过了较低的水印。
86 go 

5
Go中int和int64有什么区别?
我有一个包含整数的字符串(已从文件中读取)。 我正在尝试将转换string为intusing strconv.ParseInt()。 ParseInt要求我提供一个位大小(位大小0、8、16、32和64分别对应于int,int8,int16,int32和int64)。 从文件读取的整数很小(即,它应该适合普通的int)。但是,如果传递的位大小为0,则会得到类型的结果int64(大概是因为我正在64位OS上运行)。 为什么会这样呢?我怎样才能得到一个普通的整数?(如果有人快速入门了何时以及为什么我应该使用不同的int类型,那真是太棒了!) 编辑:我可以使用将int64转换为普通int int([i64_var])。但是我仍然不明白为什么ParseInt()当我请求位大小为0时为什么给我一个int64。
86 go 

5
从标准输入读取整数
如何使用fmt.ScanfGo中的函数从标准输入获取整数输入? 如果使用无法完成此操作fmt.Scanf,那么读取单个整数的最佳方法是什么?
85 go  stdin 

2
runtime.Gosched到底做什么?
在Tour of Go网站的go 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 …
85 concurrency  go 

9
是否存在任何golang交互式调试器?[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow的主题。 3年前关闭。 改善这个问题 标题几乎总结了一下。我正在尝试Go,但我真的很想念能够在交互式环境中设置断点并尽可能多地进/出/出的功能。我知道我可以使用gdb调试Go,但是与使用可以插入gdb进行断点的IDE相比,这很烦人。 我尝试搜索一个,但只能找到具有语法突出显示功能但没有调试功能的插件或小型IDE。
85 debugging  go 

1
“ gc”和“ gccgo”之间的主要区别是什么?
两种流行的Go编译器'gc'和'gccgo'之间的主要区别是什么?建立绩效?运行时性能?命令行选项?许可? 我不是在寻找哪种方法最好的意见,而只是对它们之间差异的基本概述,因此我可以决定哪种方法最适合我的需求。
85 go  gccgo 

4
如何在Go中清除地图?
我在寻找类似c ++函数.clear() 的原始类型map。 还是应该只创建一个新地图? 更新:谢谢您的回答。通过查看答案,我刚刚意识到有时创建新地图可能会导致我们不想要的某些不一致之处。考虑以下示例: var a map[string]string var b map[string]string func main() { a = make(map[string]string) b=a a["hello"]="world" a = nil fmt.Println(b["hello"]) } 我的意思是,这仍然与.clear()c ++中的功能不同,后者将清除对象中的内容。
85 go 

3
去做一个GET请求并建立查询字符串
我是Go的新手,现在还不太了解所有内容。在许多现代语言Node.js,Angular,jQuery,PHP中,您可以使用其他查询字符串参数来执行GET请求。 在Go中执行此操作似乎并不简单,而且我还不能真正弄清楚。我真的不想为我要执行的每个请求都连接一个字符串。 这是示例脚本: package main import ( "fmt" "io/ioutil" "net/http" ) func main() { client := &http.Client{} req, _ := http.NewRequest("GET", "http://api.themoviedb.org/3/tv/popular", nil) req.Header.Add("Accept", "application/json") resp, err := client.Do(req) if err != nil { fmt.Println("Errored when sending request to the server") return } defer resp.Body.Close() resp_body, _ := ioutil.ReadAll(resp.Body) fmt.Println(resp.Status) …
85 http  go 

4
golang中[] string和…string之间有什么区别?
在Go语言中, []string 是一个字符串数组 并且我们也将其...string用作参数。 有什么不同? 功能定义: func f(args ...string) {} 我可以像下面这样调用此函数吗? args := []string{"a", "b"} f(args)
85 string  go 

2
返回指向本地结构的指针
我看到一些具有以下构造的代码示例: type point struct { x, y int } func newPoint() *point { return &point{10, 20} } 我有C ++背景,对我来说似乎是错误。这种结构的语义是什么?是否在堆栈或堆上分配了新点?
85 go 

4
从本地文件创建io.Reader
我想打开一个本地文件,并返回一个io.Reader。原因是我需要向io.Reader正在使用的库中提供,例如: func read(r io.Reader) (results []string) { }
85 go 

4
在用于Go的Web服务器前使用Nginx有什么好处?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 改善这个问题 我正在编写一些返回JSON数据的Web服务,这些用户有很多用户。 与仅使用go http服务器相比,在服务器前端使用Nginx有什么好处?

4
如何在Go中执行不区分大小写的正则表达式?
现在,当然,我可以编写正则表达式来处理这两种情况,例如regexp.Compile("[a-zA-Z]"),但是我的正则表达式是由用户提供的字符串构造的: reg, err := regexp.Compile(strings.Replace(s.Name, " ", "[ \\._-]", -1)) s.Name名字在哪里。可能类似于“西北偏北”。现在,对我来说,最明显的解决方案是遍历每个字符,s.Name并为每个字母写“ [nN]”: for i := 0; i < len(s.Name); i++ { if s.Name[i] == " " { fmt.Fprintf(str, "%s[ \\._-]", str); } else { fmt.Fprintf(str, "%s[%s%s]", str, strings.ToLower(s.Name[i]), strings.ToUpper(s.Name[i])) } } 但是我觉得这是一个不太优雅的解决方案。速度并不是真正的问题,但是我需要知道是否还有另一种方法。
84 regex  go 


4
获取Go语言的Unix时间戳(当前时间,以秒为单位)
我有一些用Go编写的代码,我正在尝试更新这些代码以使用最新的每周构建。(它最后一次在r60下构建)。现在,除以下位外,其他所有东西都在工作: if t, _, err := os.Time(); err == nil { port[5] = int32(t) } 关于如何更新它以与当前Go实施一起使用的任何建议?
84 unix  timestamp  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.