草庐IT

行为识别

全部标签

go - 执行 .go 文件时出错。即使安装了 go 也无法识别

当我在命令行中输入gorunfile.go时,它说go不是内部或外部命令,也不是可运行的程序或批处理文件。我已经安装了Go。编辑:抱歉,这是一个奇怪的问题 最佳答案 您应该将安装Go的目录(默认c:\Go\bin)放入您的PATH环境变量中。 关于go-执行.go文件时出错。即使安装了go也无法识别,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/53468842/

go - 导入更新在主包中无法识别

我正在处理一个项目,并且有几个我创建的包,我正在将它们导入到我的主项目中。现在,当我获取代码并将其移动到外部包中时,我可以从我的主项目中调用它的函数。但是一旦我将新函数添加到我的外部包中,我总是会在构建过程中遇到undefinedfunc...错误。我试过重建我的外部包..但没有成功。我能够更新对自定义包的引用的唯一方法是重命名外部包和文件夹。例如,如果我在/project/blah/blah.go中有以下内容:packageblahfuncDoSomethingCool(sstring){fmt.Print(s)}我可以在我的主应用程序(project/web/main.go)中将此

go filepath.Walk 行走行为

在我的代码文件路径中。Walk遍历目录,在示例中所有目录都称为dir1.dir2.dir10.dir100.diretc当遍历目录时它会看到1.dir10.dir2.dir我如何制作自己的walkFunc以便它通过这样的目录,1.dir2.dir10.dir 最佳答案 如docs中所述filepath.Walk按词法顺序遍历条目。如果您想以不同的顺序列出它们,您可以:使用File.ReadDirNames进行自己的遍历调用filepath.Walk,将所有路径放入一个slice中,并按需要排序。

go - 为什么 golang 在 slice 和 map 之间的 `[]` 运算符上实现不同的行为?

这个问题在这里已经有了答案:Whyaremapvaluesnotaddressable?(2个答案)关闭4年前。typeSstruct{eint}funcmain(){a:=[]S{{1}}a[0].e=2b:=map[int]S{0:{1}}b[0].e=2//error}a[0]是可寻址的,但b[0]不是。我知道第一个0是一个索引,第二个0是一个键。为什么golang会这样实现?有什么进一步的考虑吗?我已经阅读了github.com/golang/go/src/runtime中map的源代码如果maxKeySize和maxValueSize足够小,并且映射结构已经支持indirec

Golang 阴影行为解释

这个问题在这里已经有了答案:Golangmixedassignmentanddeclaration(4个答案)关闭4年前。在这段代码中list:=[]string{"a","b","c"}for{list:=repeat(list)...funcrepeat(list[]string)[]string{...很明显,用作repeat()函数参数的list变量是外部的隐藏列表变量。现在我的问题是,Go语言的律师会如何解释这种行为?乍一看,我认为内部列表变量的声明应该先于repeat(list)表达式求值。

go - 请解释一下DEFER在golang中的行为

这个问题在这里已经有了答案:UseofdeferinGo(6个答案)关闭3年前。据我所知,defer通常用于关闭或释放资源。并且在代码的block(函数)内使用deferFUNC()确保FUNC()将在从该block(函数)返回或panic的情况下调用这个block(函数)。那么-如何解释这段代码中的defer行为:(Example):packagemainimport("fmt""errors")functest()error{err:=errors.New("someerror")returnerr}funcmain(){iferr:=test();err!=nil{fmt.Pri

go - Go 允许算术运算溢出而不是抛出异常是预期的行为吗?

我正在将一些Go代码移植到Rust,我意识到Rust会在乘法期间发生溢出时发生panic,而Go允许发生溢出。下面的测试代码,不会导致溢出但会打印减少的值。(测试通过:https://play.golang.org/)funcmain(){fmt.Println("test\n")varkeyuint64=15000;key=key*2862933555777941757+1fmt.Println(key)} 最佳答案 Spec:Integeroverflow:Forunsignedintegervalues,theoperatio

超时 Goroutine 的 Golang 间歇性行为

我正在尝试为重复性任务实现并发。我想在不同的Goroutine上实现一个http请求(如longRunningTask函数所示)。我为停止Goroutine的机制提供了一个计时器,并在重负载任务进行到预定义的超时时向主Goroutine发送超时信号。我目前遇到的问题是我出现间歇性行为。代码已简化为如下所示。packagemainimport("fmt""time")funcmain(){variterationint=5timeOutChan:=make(chanstruct{})resultChan:=make(chanstring)fori:=0;i我相信每次尝试都应该打印出来ti

go - 带有 channel 的Goroutine的行为

下面给出的代码输出有些混乱,请帮助我理解通道和goroutine的行为以及如何执行实际上发生了。我试图理解程序的流程,但是执行了“调用goroutine”之后的语句,即使goroutine被调用了,稍后执行goroutines中的语句,在第二次“调用goroutine”时,行为不同,并且打印/程序流程的顺序发生了变化。以下是代码:packagemainimport"fmt"funcmain(){fmt.Println("1")done:=make(chanstring)gotest(done)fmt.Println("7")fmt.Println(上面代码的结果:17238109465

go - golang 中嵌套 slice 中删除元素的奇怪行为

我正在做一个golang项目。我正在尝试维护现有slice中的slice,其中我的新slice不包含现有slice元素。我试过这样的代码:packagemainimport("fmt""reflect")funcmain(){savedArr:=make(map[string][]int)newArr:=make(map[string][]int)days:=[]string{"saturday","friday","sunday"}newSpotsArr:=[]int{10,20,30,40,50,60,70,80,90,100,101}savedArr["saturday"]=[]