小编kwo*_*lfe的帖子

使用mgo的非结构化MongoDB集合

我是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中做同样的事情?

go mgo

20
推荐指数
1
解决办法
1万
查看次数

Python:BaseHTTPRequestHandler - 阅读原始帖子

如何阅读原始http帖子STRING.我找到了几个用于读取帖子的解析版本的解决方案,但是我正在处理的项目提交了一个没有标题的原始xml有效负载.所以我试图找到一种方法来读取post数据,而不将其解析为key => value数组.

python basehttpserver httpserver basehttprequesthandler

12
推荐指数
3
解决办法
1万
查看次数

net/url 包:从 url 中删除查询

我只是想确保我没有遗漏 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)

http://play.golang.org/p/injlx_ElAp

go

7
推荐指数
2
解决办法
7686
查看次数

Golang:保护源代码

目前Go/Golang一般都很难搜索,也没有找到我在这里寻找的东西.我知道在使用多种语言编译应用程序时可以进行某种程度的加密.任何人都可以在编译成exe之后快速了解Go源代码的安全性吗?如果可以阅读,至少部分是有什么可以提高源代码的安全性吗?

encryption go

5
推荐指数
1
解决办法
2902
查看次数

encoding/xml处理未映射的元素

来自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

go

4
推荐指数
1
解决办法
1750
查看次数

反映[]字节的值

如何检索此接口的[]字节值?

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)

reflection go

4
推荐指数
1
解决办法
1300
查看次数

Golang:异步http服务器中的共享通信

除了编写一个简单的http服务器之外,golang的绝对初学者.我正在研究Go作为编写异步过程的可能性.如果可以,请提供一个如何实现这一目标的快速示例:

Http请求'a'进来,基于此请求中的POST有效负载启动操作(在post或url中使用某种唯一标识符).由'a'启动的异步过程将使用原始唯一标识符(请求'b')响应同一服务器,而请求'a'仍然打开.我想根据请求'b'回复将该回复传达回请求'a'.

go

3
推荐指数
1
解决办法
4484
查看次数

Golang:从具有mutex的hashmap读取的最佳方式

这是此处的延续: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)

mutex hashmap go

2
推荐指数
1
解决办法
2330
查看次数

加权随机坐标

这可能更多的是搜索一个术语,但也欢迎解决方案。我正在寻找创建 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,那就加分了。

random math weighted

2
推荐指数
1
解决办法
981
查看次数