所以在Python和Ruby中,有一个splat操作符(*)用于将数组作为参数解包。 在JavaScript中有.apply()函数。 在Go中有没有一种方法来parsing数组/片段作为函数参数? 任何资源,这将是伟大的! 一些沿着这条线: func my_func(a, b int) (int) { return a + b } func main() { arr := []int{2,4} sum := my_func(arr) } 如果我犯了句法错误,我会表示歉意。 我是新来的。
这是一个简单的去程序不工作: 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: invalid operation: v[property] (index of type *Vertex) 我想要的是访问使用其名称的顶点X属性。 如果我做vX话,但是v["X"]没有。 有人能告诉我如何使这项工作?
我最近完成了Wiki Web开发教程(http://golang.org/doc/articles/wiki/)。 我有很多的乐趣,我想实验更多的净/ http包。 但是,我注意到,当我从控制台运行wiki时,wiki接pipe了控制台。 如果我closures控制台terminal或用ctrl + z停止进程,则服务器停止。 我怎样才能让服务器在后台运行? 我认为这个术语是在一个守护进程中运行的。 我在Ubuntu 12.04上运行这个。 谢谢你的帮助。
package main import ( "fmt" "strings" ) func main() { reg := […]string {"a","b","c"} fmt.Println(strings.Join(reg,",")) } 给我一个错误: prog.go:10:不能使用reg(type [3] string)作为参数的types[] string到strings.Join 有没有比循环和添加到一个更直接/更好的方法?
来自node.js的观点,所有的代码都是非阻塞的。 在Go中,使用频道很容易实现非阻塞。 如果有人正在写一个node.jstypes的服务器,是否有意义,使其非阻塞? 例如,有一个数据库连接()函数返回一个通道,而不是等待连接发生阻塞。 对我来说,这似乎是正确的做法 但是…
所以,最近几天的热门话题是Go ,来自Google的新语言。 假设你像我一样都是痴迷于编程语言的爱好者,那么你已经下载了它,创build了它并运行你的“Hello,世界”程序(使用UTF-8发明者编写的语言是不是很好? 。 你们都读过教程 , Effective Go和其他一些文档。 现在,你打算怎么做? 我希望看到一些展示Gofunction的演示。 你可以在一个简短的程序中做什么? 展示你最好的例子代码。 尽pipe在一个需求不断变化的项目过程中,你们已经和许多程序员团队一起编写并维护了一个庞大的代码库,但真正衡量一门语言是不可能实现的,只要有限的数量代码确实有助于展示语言的expression力量。 我希望看到能够真正实现Go的独特新function的简短,完整的程序; 不只是片段或“你好,世界”。 所以,发布一些你用Go写的很酷的代码。 利用其独特的function,比如它的goroutines和并发通道,或者基于接口的types系统。 你可以写一个原始的聊天服务器,或凉爽的IRC机器人? 实现可扩展到多个内核的并行Mandelbrot集合? 写一些小语言的翻译? 你能用三十行完成吗? 我select了30个,就像你可以放入堆栈溢出代码块一样,没有溢出,并得到一个滚动条; 应该足够做一些有趣的事情,而不要打高尔夫球,但要足够短,让每个人的注意力快速演示。 例如,只需要重新格式化一下,示例Web服务器应该能够适应(不包括数据)。 向我们展示您的Go代码!
在Golang中进行date比较有什么select吗? 我必须根据date和时间对数据进行分类。 所以我可能会允许一个对象发生在一个date范围内,只要它也出现在一个时间范围内。 在这个模型中,我不能简单地select最老的date,最新的时间/最新的date,最新的时间和Unix()秒来比较它们。 我真的很感激任何build议。 最终,我写了一个时间parsingstring比较模块来检查时间是否在一个范围内。 然而,这并不是很好, 我有一些空头的问题。 我只是为了好玩而在这里张贴,但我希望有一个更好的方法来比较。 package main import ( "strconv" "strings" ) func tryIndex(arr []string, index int, def string) string { if index <= len(arr)-1 { return arr[index] } return def } /* * Takes two strings of format "hh:mm:ss" and compares them. * Takes a function to compare individual sections […]
我正在尝试编写一个基本的go程序来调用另一个文件上的函数,但是是同一个包的一部分。 但是,它返回: undefined: NewEmployee 这里是源代码: main.go : package main func main() { emp := NewEmployee() } employee.go : package main type Employee struct { name string age int } func NewEmployee() *Employee { p := &Employee{} return p } func PrintEmployee (p *Employee) { return "Hello world!" } 提前致谢
如何在Go传递可变长度参数? 例如,我想打电话 func MyPrint(format string, args …interface{}) { fmt.Printf("[MY PREFIX] " + format, ???) } // to be called as: MyPrint("yay %d", 213) // or MyPrint("yay") // or MyPrint("yay %d %d",123,234)
我想了解Go中的并发性。 特别是,我写了这个线程不安全的程序: package main import "fmt" var x = 1 func inc_x() { //test for { x += 1 } } func main() { go inc_x() for { fmt.Println(x) } } 我认识到我应该使用渠道来防止x竞争条件,但这不是重点。 该程序打印1 ,然后似乎永远循环(不打印任何更多)。 我希望它打印出一个无限的数字列表,可能跳过一些,并重复其他人由于竞争条件(或更糟糕的 – 打印数字,而它正在更新inc_x )。 我的问题是:为什么程序只打印一行? 只是要清楚:我没有使用渠道的目的这个玩具的例子。