我目前正在研究为Go中的net.Conn接口创建一些单元测试,以及在该功能之上构建的其他功能,我想知道在Google Go中进行单元测试的最佳方法是什么?我的代码看起来像:
conn, _:=net.Dial("tcp", "127.0.0.1:8080")
...
fmt.Fprintf(conn, "test")
...
buffer:=make([]byte, 100)
conn.Read(buffer)
Run Code Online (Sandbox Code Playgroud)
是测试此代码的最有效方法,以及使用这些函数来启动单独的goroutine以充当服务器的代码,使用net.http.httptest包,还是其他什么?
我想将ReCAPTCHA集成到我的GAE Golang Web应用程序中.为了验证验证码,我需要获取用户的IP地址.如何从表单发布中获取用户的IP地址?
我需要创建一个民意调查,以便按照它们的好坏顺序创建项目的排名列表.我打算向每个用户展示两个项目并让他们选择一个他们认为更好的项目,并多次重复该过程.它有点类似于您在社交网络电影中看到的内容.我应该如何根据收到的答案对项目进行排名?
我现在第二次遇到这个问题了,我想知道是否有任何解决方案.我正在Google App Engine上运行一个依赖于通过HTTP JSON RPC与网站进行频繁通信的应用程序.似乎GAE倾向于在日志中随机显示这样的消息:
"此请求导致您的应用程序启动了一个新进程,从而导致您的应用程序代码首次加载.因此,此请求可能需要更长的时间并且使用的CPU比典型的应用程序请求更多."
并重置存储在RAM中的所有变量而不发出警告 无论我再次设置变量多少次或将更新的代码上传到GAE,相同的过程都会反复发生,尽管增加应用版本号似乎可以解决问题.
如何获取有关此行为的更多信息,如何避免这种行为并防止我的Golang应用程序在Google App Engine上丢失?
编辑:
存储在RAM中的变量是字符串,字节,bool和指针的小类.没有太复杂或太大.
谷歌应用引擎似乎在重大使用的几秒钟内"开始一个新的过程",这应该不足以让应用程序因未被使用而关闭.应用程序上传到GAE,其变量集和创建的新进程之间的时间跨度不到一分钟.
在我的Go代码中,我想创建一个自定义数据类型的数组.我打电话
Blocks=make(*BlockData, len(blocks))
Run Code Online (Sandbox Code Playgroud)
我收到错误:
cannot make type *BlockData
Run Code Online (Sandbox Code Playgroud)
我的类BlockData包含诸如uint64,int64,float32,string,[] byte,[] string和[]*TransactionData之类的字段类型.最后一个是指向另一个自定义类的指针数组.
我该怎么做才能解决这个错误?
我一直在使用Google App Engine Go SDK开发一些应用程序,这些应用程序使用Memcache作为缓冲区从数据存储区加载数据.由于Memcache只能存储数据[]byte,我经常发现自己创建函数来将各种结构编码为字符串,并且还可以反转该过程.毋庸置疑,当我需要做5次这样的事情时,这是相当繁琐的.
是否有一种简单的方法可以将任何可以存储在Datastore中的任意结构转换为将其[]byte存储在Memcache中,然后将其加载回来,而无需为GAE Golang中的各种结构创建自定义代码?
google-app-engine serialization memcached go data-structures
我有以下功能:
func (c *Class)A()[4]byte
func B(x []byte)
Run Code Online (Sandbox Code Playgroud)
我想打电话
B(c.A()[:])
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误:
cannot take the address of c.(*Class).A()
Run Code Online (Sandbox Code Playgroud)
如何正确获取Go中函数返回的数组?
我正在开发一个Google App Engine Go应用程序并在本地进行测试.我有一些测试环境的变量和实时App Engine环境的一些变量.我想知道是否有一些方法可以从代码内部确定代码运行的环境,并使用适当版本的变量,而无需始终注释和取消注释代码.
testing google-app-engine development-environment environment-variables go
我目前正在尝试实现一个可以在Google Go中调用中断信号的函数.我知道如何拦截来自控制台的中断信号signal.Notify(interruptChannel, os.Interrupt),但是,我找不到实际发送中断信号的方法.我发现你可以向一个进程发送一个信号,但我不确定这是否可用于发送一个顶级中断信号.
有没有办法从golang函数中发送一个中断信号,该函数可以被正在侦听系统中断信号的任何东西捕获,或者是golang不支持的东西?
我一直在尝试各种配置,以便在Go中为Bitcoin调用一个简单的JSON-RPC服务器,但是没有设法获得任何地方.
在Python中,整个代码如下所示:
from jsonrpc import ServiceProxy
access = ServiceProxy("http://user:pass@127.0.0.1:8332")
print access.getinfo()
Run Code Online (Sandbox Code Playgroud)
但是在Go中,我似乎碰到了像"地址中的冒号太多"或"没有这样的主人"这样的错误.我尝试过使用rpc和rpc/jsonrpc这两个软件包,使用Dial和DialHTTP方法,使用各种网络参数,仍然无法到达任何地方.
那么,如何在Go中正确调用JSON-RPC服务器?