我是Go的新手.从我在mGo示例中看到的情况来看,为了查询集合然后从中读取,您必须预先定义将在结构中返回的数据.
type Person struct {
ID bson.ObjectId `bson:"_id,omitempty"`
Name string
Phone string
Timestamp time.Time
}
Run Code Online (Sandbox Code Playgroud)
在PHP中,文档被分配给一个数组.这是完美的,因为一个记录可能有完全不同的密钥集(可能不包含名称或电话,但包含电子邮件),我可以直接访问它而无需设置预定义的类/结构/变量.
有没有办法在Go/mGo中做同样的事情?
如何阅读原始http帖子STRING.我找到了几个用于读取帖子的解析版本的解决方案,但是我正在处理的项目提交了一个没有标题的原始xml有效负载.所以我试图找到一种方法来读取post数据,而不将其解析为key => value数组.
我只是想确保我没有遗漏 net/url 包中的某些内容。有没有办法在没有查询的情况下获取 url,而无需使用 strings 包将其剥离?
package main
import (
"fmt"
"net/url"
)
func main() {
u, _ := url.Parse("/url?foo=bar&foo=baz")
fmt.Printf("full uri: %#v\n", u.String())
fmt.Printf("query: %#v", u.Query())
}
Run Code Online (Sandbox Code Playgroud)
目前Go/Golang一般都很难搜索,也没有找到我在这里寻找的东西.我知道在使用多种语言编译应用程序时可以进行某种程度的加密.任何人都可以在编译成exe之后快速了解Go源代码的安全性吗?如果可以阅读,至少部分是有什么可以提高源代码的安全性吗?
来自http://golang.org/pkg/encoding/xml/#Unmarshal
- 如果XML元素包含未匹配任何上述规则的子元素,并且struct具有带有标记",any"的字段,则unmarshal将子元素映射到该struct字段.
我无法将XML信封的剩余部分放入我的结构中(以显示我的映射不完整)
http://play.golang.org/p/mnFqAcguJQ
我知道你可以使用mgo包中的bson.M使用inline来完全使用这个方法 - 但看起来map [string] interface {}不是这里的答案.
编辑:经过一些额外的游戏,我发现了我认为是一些额外的意外行为.
切换为[]字符串作为类型开始接受输入,但没有键/值对:http://play.golang.org/p/wCAJeeQa4m
我还计划调整encode/xml以解析html.我没有在文档中看到,如果一个元素存在多次,它将保存它的最后一个实例,而不是错误输出:http://play.golang.org/p/0MY__R-Xi3
如何检索此接口的[]字节值?
package main
import (
"reflect"
)
func byteInterface() interface{} {
return []byte("foo")
}
func main() {
//var b []byte
i := byteInterface()
switch {
case reflect.TypeOf(i).Kind() == reflect.Slice && (reflect.TypeOf(i) == reflect.TypeOf([]byte(nil))):
default:
panic("should have bytes")
}
}
Run Code Online (Sandbox Code Playgroud) 除了编写一个简单的http服务器之外,golang的绝对初学者.我正在研究Go作为编写异步过程的可能性.如果可以,请提供一个如何实现这一目标的快速示例:
Http请求'a'进来,基于此请求中的POST有效负载启动操作(在post或url中使用某种唯一标识符).由'a'启动的异步过程将使用原始唯一标识符(请求'b')响应同一服务器,而请求'a'仍然打开.我想根据请求'b'回复将该回复传达回请求'a'.
这是此处的延续:Golang:异步http服务器中的共享通信
假设我有一个带锁定的hashmap:
//create async hashmap for inter request communication
type state struct {
*sync.Mutex // inherits locking methods
AsyncResponses map[string]string // map ids to values
}
var State = &state{&sync.Mutex{}, map[string]string{}}
Run Code Online (Sandbox Code Playgroud)
写入此函数将触发锁定.我的问题是,在不阻止写入hashmap的情况下,让另一个函数检查值的最佳/最快方法是什么?我想知道它上面有一个值的瞬间.
MyVal = State.AsyncResponses[MyId]
Run Code Online (Sandbox Code Playgroud) 这可能更多的是搜索一个术语,但也欢迎解决方案。我正在寻找创建 n 个随机 x,y 坐标。我遇到的问题是我希望坐标被“加权”或者有更多的机会接近特定点。我使用这个伪代码创建了一些接近的东西:
x = rand(100) //random integer between 0 and 100
x = rand(x) //random number between 0 and the previous rand value
//randomize x to positive or negative
//repeat for y
Run Code Online (Sandbox Code Playgroud)
这可以将对象拉向 0,0 - 但是如果您创建足够的点,您可以看到 x 和 y 轴的图案。这是因为即使 x 设法达到 100,y 也很可能更接近 100。
我希望避免形成这条 x,y 线。如果有一种方法可以放入多个“加权坐标”,随机坐标会倾向于该坐标,而不是静态地指向 0,0,那就加分了。
go ×7
encryption ×1
hashmap ×1
httpserver ×1
math ×1
mgo ×1
mutex ×1
python ×1
random ×1
reflection ×1
weighted ×1