草庐IT

go-mocket

全部标签

go - 在 golang 中通过 fmt.Scanln() 获取用户输入时出现问题

我正在尝试使用fmt.Scanln()通过我在golang中的控制台获取用户的输入。它在正常情况下工作正常。但是,每当我在循环中输入时,第一次迭代中的输入是正确的,但在循环的下一次迭代中,在前面添加了一个额外的笑脸收到的字符串。我不知道是什么问题。如果有人提出一些解决方案,将非常感激。func(a*Block)fillBlock(){fmt.Println("BlockDetails:")fmt.Print("EnterBlockName:")fmt.Scanln(&a.Data)fori:=0;i 最佳答案 这是错误的:fmt.P

go - Golang 应用程序的类似 PM2 的进程管理解决方案?

Go是否有类似PM2forNodeJS的进程管理器?PM2的基本特征:无限期地在后台运行应用程序,例如等待请求的服务器。重启后重启应用。编者注:PM2提供了一种在后台永远运行NodeJS应用程序的简单方法,例如用于生产服务器。当然,您可以使用Linux操作系统,使用不特定于任何特定编程语言的工具来做到这一点,这些答案很有帮助。由于Go可以创建可执行文件,因此您实际上不需要Go语言特定的解决方案来解决这个问题。 最佳答案 开发环境对于开发,您可能需要进程管理器来监视文件更改并实时重新加载您的服务器二进制文件。我习惯了Godeganst

go - Go中的Supertype如何引用Subtype

Go不支持多态性。如果要在通用类型的保护伞下传递特定类型,则它无法在Go中工作。以下一段代码抛出错误。在Go中实现相同功能的最佳方法是什么?packagemainimport("fmt")typeparentstruct{parentIDstring}typechild1struct{parentchild1IDstring}typechild2struct{parentchild2IDstring}typechildCollectionstruct{collection[]parent}func(c*childCollection)appendChild(pparent){c.col

go - 在 Go 中是否有一种惯用的方法来通过类型断言的接口(interface)进行索引?

我正致力于在Go中实现并发的string和byte阅读器。这样做的目的是允许解析newline和读取字符串中的其他此类字节。在研究这个问题时,我发现了在单值上下文中处理多个值的各种方法1,但是这些都没有处理混合类型的出现。有人建议使用接口(interface)来处理这个问题2,并且已经尝试过,但我对现有建议的冗长冗长感到不舒服3和4.我想知道是否有一种惯用的方法可以以整洁的方式有效地对各种类型的值进行排序。已编辑:首先,我按照建议建立了一个界面。这似乎是个好主意,如果我记得的话,这是C中常用的技巧。funcUse(vals...interface{}){i:=0p:=[]uint8{}

go - 如何将指针值转换为原始值

这个问题已经有了答案:HowdoIdereferenceapointerinGo?1答我有一个类型为ip的net.ip变量*net.IP,我将它传递给一个只接受net.IP的查找函数,得到错误;cannotuseip(type*net.IP)astypenet.IPinargumenttoLookup 最佳答案 这就是我在评论中添加的代码。罗比的暗示packagemainimport("fmt")funcderefPointer(importantType*int){fmt.Println(*importantType)}funcm

go - 无效操作 : (operator - not defined on string)

arrayAll:=[]string{"a","b","c","d","e"}x:=p[arrayAll[i]-"a"]go不支持运算符“-”,那么如何获取数组的索引:arrayAll[i]-"a" 最佳答案 如何在字符串上定义运算符-?调用"Hello"-"World"后你期望得到什么结果?您是否尝试对单个字符进行操作?这是明确定义的,您可能期望'c'-'a'确实等于2。考虑:arrayAll:=[]byte{'a','b','c'}(orsimply"abc")x:=p[arrayAll[2]-'a']不管怎样,您很可能不想减去

Go 方法指针接收者的语法

在go中,也可以为指针接收器定义一个方法。Go可以解释代码语法如下:在方法的定义中,只写接收者的指针类型就足够了,在函数定义中你不需要解引用指针来访问你想访问的内存中的对象。在函数调用中,你不需要在指针类型上调用函数,我的意思是在引用上。Go可以理解你的意思。typeBoxstruct{colorstring}varbBox基于此,golang代码片段在下面等效的原因是什么?除了方便或代码速记之外,还有其他原因吗?走吧,但经典的C方式也行得通:func(b*Box)setColor(cstring){b.color=c}b.setColor("blue")经典的C方式:func(b*B

Go 交叉编译器失败

当点击此链接进行交叉编译时!http://dave.cheney.net/2012/09/08/an-introduction-to-cross-compilation-with-go失败于:%go-crosscompile-build-all低于错误:#构建C引导工具。命令/距离去工具dist:失败:gitrev-parse--abbrev-refHEAD./make.bash:eval:line135:意外标记附近的语法错误`(' 最佳答案 你说:Whenfollowedthislinktodocrosscompilation!

遵循 Pluralsight Go 教程时出现无效内存地址错误

我正在按照Pluralsight的教程进行操作,并按照它所说的进行操作,编译甚至可以正常工作,但是当在浏览器上刷新页面时,应用程序会出现困惑并在控制台上输出错误,并且http服务器无法按预期工作。产生这个错误的src代码如下:packagemainimport("net/http""text/template")funcmain(){http.HandleFunc("/",func(whttp.ResponseWriter,req*http.Request){w.Header().Add("ContentType","text/html")templates:=template.New

go - sync.Once.Do 是否保证跨 goroutine 的可见性?

例子here暗示sync.Once.Do保证字符串vara跨goroutines的可见性。如果例如由sync.Once.Do调用的函数f()初始化结构实例的多个字段,是否也是如此?在没有任何额外同步的情况下,结构实例的所有字段是否对其他goroutine可见? 最佳答案 让我们分解一下example:变量a在函数setup()返回之前设置,因为在单个goroutine中的读取和写入必须表现得好像它们已执行按照程序指定的顺序[1].once.Do()对setup()的单次调用发生在once.Do()的任何调用之前返回[2].因此,a变