小编son*_*ags的帖子

在Golang中初始化一个嵌套的结构

我无法弄清楚如何初始化嵌套结构.在这里找一个例子:http: //play.golang.org/p/NL6VXdHrjh

package main

type Configuration struct {
    Val   string
    Proxy struct {
        Address string
        Port    string
    }
}

func main() {

    c := &Configuration{
        Val: "test",
        Proxy: {
            Address: "addr",
            Port:    "80",
        },
    }

}
Run Code Online (Sandbox Code Playgroud)

go

108
推荐指数
7
解决办法
12万
查看次数

检查Golang中的STDIN上是否有要读取的内容

如果某个字符串通过管道连接到其STDIN,我需要一个命令行实用程序来表现不同.这是一些最小的例子:

package main // file test.go

import (
    "fmt"
    "io/ioutil"
    "os"
)

func main() {
    bytes, _ := ioutil.ReadAll(os.Stdin)

    if len(bytes) > 0 {
        fmt.Println("Something on STDIN: " + string(bytes))
    } else {
        fmt.Println("Nothing on STDIN")
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您这样称呼它,这可以正常工作:

echo foo | go run test.go
Run Code Online (Sandbox Code Playgroud)

如果test.go在STDIN上没有任何东西的情况下调用,那么事情就会停留在...

bytes, _ := ioutil.ReadAll(os.Stdin)
Run Code Online (Sandbox Code Playgroud)

......等待EOF.

为了实现这一目标,我需要做些什么?

提前致谢!

go

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

通过Martini提供解码图像

我目前正在玩golang和Martini等,并希望动态地提供一些被操纵/生成的图像.这是一个最小的例子:

package main

import (
    "github.com/codegangsta/martini"
    "github.com/nfnt/resize"
    "image"
    "image/jpeg"
    "log"
    "os"
)

func thumb() image.Image {
    file, err := os.Open("test.jpg")
    if err != nil {
        log.Fatal(err)
    }

    img, err := jpeg.Decode(file)
    if err != nil {
        log.Fatal(err)
    }
    file.Close()

    m := resize.Resize(0, 200, img, resize.MitchellNetravali)

    return m
}

func main() {
    m := martini.Classic()
    m.Get("/") image.Image {
        return thumb()
    })
    m.Run()
}
Run Code Online (Sandbox Code Playgroud)

这编译得很好,但是我没有提供图像,而是获得了一些"Content-Type:text/plain; charset = utf-8",如下所示:

<*image.RGBA64 Value>
Run Code Online (Sandbox Code Playgroud)

我很确定我需要再次对图像进行编码然后提供服务.但我不太确定如何在不将图像保存到磁盘的情况下执行此操作...

提前致谢!

go martini

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

append()表示在golang中只有一个切片字段

我想将一个元素追加到一个只包含一个匿名切片的结构:

package main

type List []Element

type Element struct {
    Id string
}

func (l *List) addElement(id string) {
    e := &Element{
        Id: id,
    }
    l = append(l, e)
}

func main() {
    list := List{}
    list.addElement("test")
}
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为addElement不知道l作为切片而是作为*List:

go run plugin.go
# command-line-arguments
./plugin.go:13: first argument to append must be slice; have *List
Run Code Online (Sandbox Code Playgroud)

最有可能的是这样:

type List struct {
    elements []Element
}
Run Code Online (Sandbox Code Playgroud)

并相应地修复addElement func.我有一个比这更好的方法,例如.让我保留List类型的第一个定义的一个?

非常感谢,sontags

go

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

在 Golang 中复制 net.IP

我尝试复制 net.IP 实例的值(第 14 行和第 19 行),但显然只是传递指针:

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

我究竟做错了什么?

代码要求:

package main

import (
    "log"
    "net"
)

type Range struct {
    Start net.IP `json:"start"`
    End   net.IP `json:"end"`
}

func (r Range) Expand() []net.IP {
    next := r.Start // here (line 14)
    out := []net.IP{next}

    for !next.Equal(r.End) {
        incIP(next)
        out = append(out, next) // and here (line 19)
    }

    return out
}

func incIP(ip net.IP) {
    for j := len(ip) - 1; j >= 0; j-- {
        ip[j]++
        if ip[j] > …
Run Code Online (Sandbox Code Playgroud)

go

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

golang中的指针和调试

我陷入困境,无法弄清楚我搞砸了什么.最简单的解释方式可能是一些最小的例子:http://play.golang.org/p/14lbOBsCCo

我想通过它的指针修改结构的值,但最终修改了一些内存,而不是我想要的部分.第92行是我的问题所在.

你会如何调试这样的情况(工具等),以及如何获得broker.Port设置?

感谢您的提示/建议!

go

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

在自定义类型中包装net.IP并在golang中添加方法

我尝试将方法添加到net.IP. 因此我创建了一个自定义类型IPAddr:

package main

import (
    "encoding/json"
    "net"
    "log"
)

func readNetworks(data []byte) (*[]Network, error) {
    var networks []Network

    if err := json.Unmarshal(data, &networks); err != nil {
        return &networks, err
    }

    return &networks, nil
}

type IPAddr net.IP

type Network struct {
    CIDR          string        `json:"cidr"`
    Gateway       IPAddr        `json:"gateway"`
}

func (ip *IPAddr) copy() IPAddr {
    if x := ip.To4(); x != nil {
        ip = x
    }
    dup := make(IPAddr, len(ip))
    copy(dup, ip)
    return dup
}

func main() { …
Run Code Online (Sandbox Code Playgroud)

go

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

标签 统计

go ×7

martini ×1