草庐IT

go - go中的平方负数

我在go中对负数求平方时遇到问题...(2*(1-0.5)-4)/((4*(4-2))/(2-1))^(1/2)=-1.06066017但是用go我得到NaNpackagemainimport("fmt""math")funcmain(){fmt.Print(math.Sqrt((2*(1-0.5)-4)/((4*(4-2))/(2-1))))}或者如果我像这样使用math.Abs​​:fmt.Print(math.Sqrt(math.Abs((2*(1-0.5)-4)/((4*(4-2))/(2-1)))))我返回:0.6123724356957不正确,正确的结果是:-1.06066

go - 在函数中初始化 channel 导致 go routine 死锁

我是Go的新手,所以我确定这是我所缺少的简单内容。我正在尝试初始化一个channel以从另一个函数捕获用户输入。我尝试了以下方法:packageinputconstUP=1constRIGHT=2constDOWN=3constLEFT=4varinputChannelchaninttypeInputReaderinterface{ReadNextInt()int}funcInitInputChannel()chanint{inputChannel:=make(chanint,1)returninputChannel}funcSendInput(inputReaderInputRead

go - 如何同时打印和扫描

我正在编写一个简单的贪吃蛇游戏。这将是非常基础的,但我现在卡住了。我使用“wsad”来引导蛇,但在原始游戏中,即使我们没有改变它的方向,蛇也会移动。我的代码等待我输入一个字母,然后蛇就会移动。所以这是我测试如何计算出来的示例,但我无法得到结果。packagemainimport("fmt""github.com/eiannone/keyboard""time")functakeLetter(schanbool){char,_,err:=keyboard.GetSingleKey()iferr!=nil{panic(err)}fmt.Printf("%c",char)s即使我们没有按下任

go - CTRL + C 未被捕获

我正在尝试编写一个程序,在按下cntrl+c时打印“等待”并继续打印从1到10的数字。否则,应该打印从1到10的数字,每个数字之间延迟10秒.但是,每当我单击并且“等待”不被打印时,control+c都不会被识别,只有1到10的数字是。funcmain(){c:=make(chanos.Signal,1)signal.Notify(c,os.Interrupt)gofunc(){forsig:=rangec{fmt.Print(sig)fmt.Print("WAIT")}}()fori:=1;i 最佳答案 您需要确保您的终端或终端仿

go - 在 Go 中初始化空对象

我将根据变量使用具有不同参数的exec.Command。我在if/else括号中执行cmd:=exec.Command(...,所以cmd在该范围之外不可用。是否可以初始化cmd上面的if/else以便之后可以使用它? 最佳答案 您可以先声明类型化变量,然后再为它赋值。varcmd*exec.Cmd//orcmd:=(*exec.Cmd)(nil)在这里阅读更多https://golang.org/ref/spec#Variables在这里https://golang.org/ref/spec#Variable_declaratio

go - 将 Jenkins Freestyle Golang 作业转换为 Jenkinsfile

我正在尝试将我现有的JenkinsFreestyleGolang作业转换为Jenkinsfile,我可以将其与我的项目一起checkin,以便我可以在管道作业中使用它。上述工作只是简单地运行所有Go测试并在所有测试通过后构建项目。部署还不是这项工作的关注点。我的工作设置如下:Go插件安装:Name:GoInstallAutomatically:CheckedInstallfromgolang.org:Go1.11.2注意:我给它起了名字Go所以Go安装文件夹部分Go/src可以是在下面的目录中一致。凭证(全局):Usernamewithpassword:(Myemailaddressa

go - 无法导入位于同一目录中的包

我想在当前文件中导入或打包位于同一项目中的其他文件到一个目录中。我这样做:import(//"./dir1""/Users/my_name/my_project/dir1")它们都不起作用1)Cloninginto'/Users/my_name/go/src/github.com/github_username/github_project'...fatal:couldnotreadUsernamefor'https://github.com':terminalpromptsdisabled2)package/Users/my_name/my_project/dir1:unrecogn

go - 如何在更改位置时更新导入

我看到在Go中您可以直接从Github导入包,例如:import"github.com/MakeNowJust/heredoc"我知道我在导入行中看到的路径不是URL,而只是包所在的路径(通常相对于$GOROOT/src/pkg或$GOPATH/src)。所以heredoc包很可能位于$GOPATH/src/github.com/MakeNowJust/heredoc目录中。现在假设包开发人员决定将代码库迁移到Bitbucket。所以现在库URL是bitbucket.com/muchMoreCoolerName/heredoc。他还在代码库中添加了一些新功能。我的问题是您将如何获得更新

go - 如何在使用 golang 中现有接口(interface)的同时添加更多功能?

假设我有一个接口(interface)Foo,我正在添加一个结构,它需要Foo的方法和一些额外的方法。在那种情况下,以下两个被认为是最佳实践?或者如果有其他更合适的第三种方式,请提出建议。方法一typeFoointerface{methodA()}typeBarstruct{}func(bBar)methodA(){...}func(bBar)methodB(){...}方法二typeFoointerface{methodA()}typeBarstruct{Foo//thiscanbeinitializedwithanyconcreteimplementationofFoo}func(

go - 为什么 Args 在函数初始化之前初始化?

src/os/proc.go://Argsholdthecommand-linearguments,startingwiththeprogramname.varArgs[]stringfuncinit(){ifruntime.GOOS=="windows"{//Initializedinexec_windows.go.return}Args=runtime_args()}当我在这里调试时,我发现Args在init函数之前被初始化。它在哪里初始化? 最佳答案 如评论所述://Initializedinexec_windows.go.s