此示例取自tour.golang.org/#63
package main
import (
"fmt"
"time"
)
func say(s string) {
for i := 0; i < 5; i++ {
time.Sleep(100 * time.Millisecond)
fmt.Println(s)
}
}
func main() {
go say("world")
say("hello")
}
hello
world
hello
world
hello
world
hello
world
hello
为什么world
只打印4
次数而不是5
?
编辑: 答案可以引自golang规范:
程序执行首先初始化主程序包,然后调用函数main。当函数main返回时,程序退出。它不等待其他(非主)goroutine完成。
当您的主要功能结束时,程序即结束,即所有goroutine均终止。您的主体在go say("world")
完成之前会终止。如果您在主课程结束时睡了一段时间,您应该会看到最后的世界。
当试图从Hitbox API获取数据时,我得到了一个奇怪的结果。对于一个API的命令,这种情况每次都会发生,而对于另一个API的命令,这种情况只是有时发生。结果差不多是这样(这是我得到的最后一个结果): \U001F\B\0\0\0\0\0\U0003W8SμMU~S N T&N G6C$Z%9IGF[(\U0005\U000F(:6\U000F\B P C\U0015\N\U007F V\U00
我有一个程序可以读取两个文件(“incompleta.txt”和“completa.txt”),并比较两个文件中是否有相同的名称。其工作原理如下: 它将“completa.txt”中的所有名称存储在ArrayList中 问题是我的“lista.txt”看起来像这样:Image 第二条线完全是混乱和扭曲的。 我的Java代码:
我使用Oracle11g(在Red Hat上)。我有一个带有XMLType列的简单常规表: 我使用Oracle SQL Developer(在Windows上): 很管用。我只有一个牢房。我可以双击并下载整个XML文件。 然后我试图以CLOB的形式得到结果: 很管用。我只有一个牢房。我可以双击并看到整个文本和复制它。但有个问题。当我把它复制到剪贴板时,我只得到前4000个字符。似乎在4000位置有
问题内容: import pytz, datetime 打印以下内容: 为什么不是05:30小时?我在时区America / Los_Angeles。 问题答案: 时区多年来变化。根据http://www.prokerala.com/travel/timezones/Asia/Kolkata?mode=history,该区域的原始偏移为5.88888888889小时,或5小时53分钟。将区域分配给
问题内容: 我现在对Java左移操作有些困惑, 但 看起来像是更多的偏移值,该值的模数为32。 感谢大家对JLS的答复和报价。 我只想知道更多。是否知道以这种方式进行设计的原因?还是只是一些约定?显然C没有这个怪癖? 感谢@paxdiablo。看起来C声明了未定义的行为。 我在这里有一些个人假设: ARM体系结构参考手册A7.1.38 语法LSL Rd,Rm,#immed_5 哪里: Rd 是存储
问题内容: 我有这样的事情: 我希望它会在文本区域中显示“ hello 0”,等待1秒,然后显示“ hello 1”,然后等待1秒,依此类推。 但是发生的情况有所不同,它等待5秒钟,然后显示“ hello 4”。 任何想法? 问题答案: 是的-您基本上是在阻止UI线程,因此永远不会回避实际更新。 在UI线程中休眠是一个非常糟糕的主意。 如果您想执行类似的操作,则应使用。(我假设您正在使用Swing