我有一个地图,其值为一组地图.
例:
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)
编辑:切片值("硬币","注释"等)可以重复,所以这就是我需要使用索引的原因[].
我正在开发一个API,它也会生成一个swagger文档.问题是由于某些原因,请求模型/架构没有显示在swagger UI中,但我也没有收到任何错误.我需要将map表示为一个字符串数组.例如map [string] [] string.定义对象定义如下.
{
"definitions": {
"versions": {
"type": "string",
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个“关联”地图。问题是 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) 我的计算机上有两个网络接口(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
我发现了这个变量声明var _ PropertyLoadSaver = (*Doubler)(nil),我想知道它的目的是什么.它似乎没有初始化任何东西,因为它使用空白标识符,我猜你无法访问它.
我想知道源代码是上传还是只是二进制/编译版本?GAE工程师可以访问我宝贵的源代码吗?
我正在尝试在谷歌应用引擎上设置和使用环境变量.我的app.yaml文件如下所示.但是当我使用os.Getenv("mytoken")时,我得到一个空字符串而不是我设置的实际值.这是一个GAE错误吗?
api_version: go1
handlers:
- url: /.*
script: _go_app
env_variables:
mytoken: '88786d9b9a0359824'
Run Code Online (Sandbox Code Playgroud) 我希望标签是"帐户",但它是"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)
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)