小编The*_*hat的帖子

我怎么能写一个地图数组[golang]

我有一个地图,其值为一组地图.

例:

 thisMap["coins"][0] = aMap["random":"something"]
 thisMap["notes"][1] = aMap["not-random":"something else"]
 thisMap["coins"][2] = aMap["not-random":"something else"]
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何做到这一点go似乎只允许在处理时在一个级别设置数据maps [name][value] = value.

到目前为止,我有这个代码失败了

package main

func main() {

    something := []string{"coins", "notes", "gold?", "coins", "notes"}

    thisMap := make(map[string][]map[string]int)

    for k, v := range something {
        aMap := map[string]string{
            "random": "something",
        }

        thisMap[v] = [k]aMap
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:切片值("硬币","注释"等)可以重复,所以这就是我需要使用索引的原因[].

arrays go data-structures

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

如何在swagger中定义地图?

我正在开发一个API,它也会生成一个swagger文档.问题是由于某些原因,请求模型/架构没有显示在swagger UI中,但我也没有收到任何错误.我需要将map表示为一个字符串数组.例如map [string] [] string.定义对象定义如下.

{
  "definitions": {
    "versions": {
      "type": "string",
      "additionalProperties": {
        "type": "array",
        "items": {
          "type": "string"
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

swagger swagger-ui

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

如何在 golang 中创建关联映射?

我正在尝试创建一个“关联”地图。问题是 superMap 收集了 aMap 的所有值。基本上,即使我只想在每次查看时存储一个 amap 实例,我最终也会存储当前实例以及所有先前的循环。 supermap[value] = amap[value]。但是下面的代码片段存储了supermap[value] = amap. 原因是我找不到任何方法来解决这个问题。如果我在每次循环后删除 aMap 的旧值,它们supermap也会被删除。

  package main

    import (
    "fmt"
)

func main() {

    aData := map[int]string{
        0: "apple",
        1: "samsung",
        2: "htc",
        3: "sony",
    }

    dir := []string{"user", "doc", "bin", "src"}

    aMap := make(map[int]string)
    superMap := make(map[string]map[int]string)

    for k, v := range dir {
        aMap[k] = aData[k]
        superMap[v] = aMap


    }
    hello(superMap)

}

func hello(superMap map[string]map[int]string) {
    fmt.Printf("superMap of user is %v \n", superMap["user"]) …
Run Code Online (Sandbox Code Playgroud)

arrays go

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

拨打特定的地址/接口?Golang

我的计算机上有两个网络接口(eth0和eth1),我正在尝试使用特定的一个(eth1)拨号连接.鉴于Go是一种系统语言的说法我是这么认为的,但是现在的标准库真的可以吗?

到目前为止,我必须通过name InterfaceByName(eth1)获取接口然后我调整Addrs方法并提取第一个地址[0],它似乎是eth1接口的源地址(例如xxx.xxx.xxx/24); 另一个是ipv6地址.
我创建了一个新的Dialer并设置Dialer.LocalAddr了提取的地址.但是我得到这个错误mismatched local address type似乎与来自dial.go的 dialSingle函数有关

编辑 一些代码:

package main
import (
        "net"
        "log"
)

func main(){
        ief, err := net.InterfaceByName("eth1")
        if err !=nil{
                log.Fatal(err)
        }
        addrs, err := ief.Addrs()
        if err !=nil{
                log.Fatal(err)
        }
        d := net.Dialer{LocalAddr: addrs[0]}
        _, err = d.Dial("tcp", "google.com:80")
        if err != nil {
                log.Fatal(err)
        }
}
Run Code Online (Sandbox Code Playgroud)

输出: 2014/12/10 17:11:48 dial tcp 216.58.208.32:80: mismatched local address type ip+net

networking network-programming go

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

规范:变量赋值中空白标识符的用途是什么?

我发现了这个变量声明var _ PropertyLoadSaver = (*Doubler)(nil),我想知道它的目的是什么.它似乎没有初始化任何东西,因为它使用空白标识符,我猜你无法访问它.

go

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

将GO源代码上传到谷歌应用引擎?

我想知道源代码是上传还是只是二进制/编译版本?GAE工程师可以访问我宝贵的源代码吗?

google-app-engine go

5
推荐指数
2
解决办法
168
查看次数

在哪里记录错误?

我正在使用日志包,我想知道日志数据的默认目的地是什么.我找不到任何地方.我需要一个io编写器,并在每个日志之后专门调用它或它应该如何工作?

logging go

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

如何在google appengine上设置环境变量?

我正在尝试在谷歌应用引擎上设置和使用环境变量.我的app.yaml文件如下所示.但是当我使用os.Getenv("mytoken")时,我得到一个空字符串而不是我设置的实际值.这是一个GAE错误吗?

api_version: go1
handlers:
- url: /.*
  script: _go_app
env_variables:
  mytoken: '88786d9b9a0359824'
Run Code Online (Sandbox Code Playgroud)

google-app-engine go

5
推荐指数
2
解决办法
5567
查看次数

为什么TrimLeft不能按预期工作?

我希望标签是"帐户",但它是"ccount".为什么删除"a"?

package main

import "fmt"
import "strings"

func main() {
    s := "refs/tags/account"
    tag := strings.TrimLeft(s, "refs/tags")
    fmt.Println(tag)
}
Run Code Online (Sandbox Code Playgroud)

go

5
推荐指数
2
解决办法
2502
查看次数

为什么json.Encoder添加额外的一行?

json.Encoder似乎与json.Marshal。具体来说,它将在编码值的末尾添加新行。知道为什么吗?对我来说,这似乎是个虫子。

package main

import "fmt"
import "encoding/json"
import "bytes"

func main() {
    var v string
    v = "hello"
    buf := bytes.NewBuffer(nil)
    json.NewEncoder(buf).Encode(v)
    b, _ := json.Marshal(&v)

    fmt.Printf("%q, %q", buf.Bytes(), b)
}
Run Code Online (Sandbox Code Playgroud)

这个输出

"\"hello\"\n", "\"hello\""
Run Code Online (Sandbox Code Playgroud)

Try it in the Playground

json go

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