问题内容: 我正在使用golang网络应用程序。在这种情况下,我需要迭代HTML行的次数。 我该如何实施? 问题答案: 要在Go模板中重复执行某些操作,您可以使用操作。但是该动作希望可以对其进行迭代,例如切片,数组或映射。 传递零值切片 所以你必须养活它。但是不需要内存的空片就足够了,例如。 模板代码: 测试它: 输出(在Go Playground上尝试): 使用填充的切片 如我们所见,索引从0开
问题内容: 对于那些在生产环境中运行Go后端的人: 运行Go Web应用程序的堆栈/配置是什么? 除了人们使用标准库net / http包来保持服务器运行之外,在该主题上我还没有看到太多内容。我阅读了使用Nginx将请求传递到Go服务器的信息- 使用Go的 Nginx 在我看来,这有点脆弱。例如,如果重新启动计算机(没有其他配置脚本),服务器将不会自动重新启动。 是否有更可靠的生产设置? 除了我的
问题内容: 我在Go中实现了HTTP服务器。 对于每个请求,我需要为一个特定的结构创建数百个对象,并且我有大约10个这样的结构。因此,按照Go实现完成请求后,将对其进行垃圾回收。 因此,对于每个请求,将分配和释放大量的内存。 相反,我想实现内存池以提高分配端以及GC端的性能。 在请求开始时,我将从池中取出并在请求处理后放回去 从池实施方面 如何分配和取消分配特定类型结构的内存? 如何跟踪此内存已分
问题内容: 我用过regexp包来代替下面的文字 但是我不能替换“ products”而不替换“ products_list”之类的单词,并且Golang没有像 re.ReplaceAllStringSubmatch 这样的功能可以替换为submatch(只有FindAllStringSubmatch)。我用过 re.ReplaceAllString 用替换“产品”。 这不是我想要的,我需要以下结
问题内容: 我正在使用goroutines /频道。这是我的代码。为什么超时情况没有得到执行? 问题答案: 您的超时不会发生,因为您的goroutine 之一会每1.5秒(或大约1.5秒)重复发送一次值在您的频道上,并且只有在2秒钟内没有接收到任何值时才会发生超时。 一旦从接收到一个值,在下一次迭代中将再次执行一个 新的 调用,该调用将返回一个 新的 通道,在该通道上将仅在另外2秒钟后发送一个值。
问题内容: 我有一个作为参数的方法,我需要在此切片前添加。方法如下: 当我尝试不起作用时: 在这种情况下,正确的前置方式是什么? 问题答案: 只能附加与切片的元素类型匹配的类型的值: 所以,如果你有元素,你必须包装您最初的以能够使用: 输出(在Go Playground上尝试):
问题内容: xml文件包含两个元素。除了一个元素名称外,这些元素具有相同的结构。我试图为XMLName属性设置一个值,但这没有用。 Xml: 是否可以定义一个结构使得元素名称是动态的? 问题答案: 在文档中,该字段必须为类型。 通过以下字段设置元素名称: (此外,必须导出E1-E4才能包含在XML输出中)。 游乐场示例:http://play.golang.org/p/bzSutFF9Bo
问题内容: 输出: 我有api调用返回的结果,它就像对象数组(json数组)的复杂格式。我需要通过golang解析该结果,我该如何实现?以下数据是我的结果,它是从api调用获取的。 问题答案: 您仅错过了一点:您需要导出结构的字段: 它将起作用(在Go Playground上尝试): 请注意,JSON文本包含带有小写字母文本的字段名称,但是包足够“聪明”以匹配它们。如果它们完全不同,则可以使用st
问题内容: 我正在从这里使用出色的毒蛇库:https : //github.com/spf13/viper 我正在尝试读取hcl中的配置文件(尽管它也可能是JSOn或YAML文件),如下所示: 到目前为止,我的代码如下: 我遇到的最大问题是使用group选项。这可以是多个不同的组。 当我在使用中阅读它时,它似乎不起作用,所以我使用了标准函数。转储时,结果结构如下所示: 我使用反射时似乎是切片类型。
问题内容: 我在客户端需要一个对象,因此我使用json.marshal将其转换为JSON并将其打印到模板中。该对象将作为转义的JSON字符串输出。 我期望它是,但事实是 我知道我可以在客户端进行JSON.parse,但这是唯一的方法吗? 这是我在模板中打印的方式: 这是我的元帅职能: 问题答案: 在JS上下文中,普通字符串总是被转义。我应该在打印之前将其转换为类型。 参考:http : //gol
问题内容: sql.Open()返回* sql.DB类型的变量 我有一个函数可以调用其他10个都需要进行数据库调用的函数 是否更正确/更有效: 发送* sql.DB指针到每个函数,或 在每个函数中创建一个新的* sql.DB对象 含义 要么 我问的原因是因为我当前正在向每个函数发送指针,而我的驱动程序似乎坏了。我正在使用http://code.google.com/p/odbc,这使我相信每个功能
问题内容: 这是该应用程序的示例。基本代码位于:golang-code / handler / handler.go(在主题之后应显示ID!) 我试图在Google Appengine上的Golang中建立一个小型博客系统,并使用Mustache作为模板引擎。 所以,我有一个结构: 数据通过传递给GAE 因此,GAE自动分配一个intID(int64)。现在我试图获得最新的博客文章 直到那里一切正
问题内容: 我将整个代码库从PHP切换到Go,在运行的多个过程中,我随机遇到此错误: 这是我的db软件包,用于处理与数据库的所有连接: 我对此数据库包做错了什么,导致引发了此错误?该错误的确切含义是什么?如果打开了一个连接,我确保返回当前连接,因此对于多个请求,它使用同一连接对象。 这是mysql packet.go的摘录: 第一个“ errLog.Print(err)”是“读取数据包头”部分中的
问题内容: 为了使切片追加操作更快,我们需要分配足够的容量。有两种附加切片的方法,下面是代码: 结果是: BenchmarkSliceAppend-4 200000000 7.87 ns / op 8 B / op 0 allocs / op BenchmarkSliceSet-4 300000000 5.76 ns / op 8 B / op 比我快,我想知道为什么吗? 问题答案: 只需将值分配
问题内容: 我正在尝试实现会话处理并将其与go-endpoints包结合使用! 我用来处理会话的程序包是Gorilla Sessions(github.com/gorilla/sessions),我想要一些帮助。 我能够将cookie存储到客户端..当我调用端点时,可以看到cookie已发送到服务器。 问题是,当我尝试在调用api时从Session存储中获取Session值时,我无法扔到cooki