2017-11-11 135 views
3

我想追加的值的映射图的内部阵列:追加值,以阵列

var MyMap map[string]Example 

type Example struct { 
    Id []int 
    Name []string 
} 

这里是我尝试,但我不能指向实施例的一个目的,以追加到阵列。

package main 


import (
    "fmt" 
) 


type Example struct { 
    Id []int 
    Name []string 
} 

func (data *Example) AppendExample(id int,name string) { 
    data.Id = append(data.Id, id) 
    data.Name = append(data.Name, name) 
} 

var MyMap map[string]Example 

func main() { 
    MyMap = make(map[string]Example) 
    MyMap["key1"] = Oferty.AppendExample(1,"SomeText") 
    fmt.Println(MyMap) 
} 
+0

我以为我解决了这个问题,但我没有解决它,因为我需要分配循环中的键匹配值。 – Saem

回答

4

你需要把它到地图之前创建的实例结构的实例。

此外,您的映射会保留您的结构的副本,而不是根据MyMap定义的结构本身。尝试在地图中保留对您的示例结构的引用。

package main 

import "fmt" 

type Example struct { 
    Id []int 
    Name []string 
} 

func (data *Example) AppendOffer(id int, name string) { 
    data.Id = append(data.Id, id) 
    data.Name = append(data.Name, name) 
} 

var MyMap map[string]*Example 

func main() { 
    obj := &Example{[]int{}, []string{}} 
    obj.AppendOffer(1, "SomeText") 
    MyMap = make(map[string]*Example) 
    MyMap["key1"] = obj 
    fmt.Println(MyMap) 
} 

Pozdrawiam!

+0

是的,我做了完全一样的事情,以及我无法找到如何做,而无需创建一个结构的对象。我会恢复我自己的答案。感谢您的输入! – Saem

+0

不一样。你仍然使用结构文字而不是地图上的指针。请阅读关于结构和指针的更多信息: https://gobyexample.com/pointers https://gobyexample.com/structs –

0

好吧,我解决了它通过创建一个示例对象,然后将值附加到其数组并将其分配给映射。

像这样:

package main 


import (
"fmt" 
) 


type Example struct { 
    Id []int 
    Name []string 
} 

func (data *Example) AppendExample(id int,name string) { 
    data.Id = append(data.Id, id) 
    data.Name = append(data.Name, name) 
} 

var MyMap map[string]Example 

func main() { 

    var object Example 
    object.AppendExample(1,"SomeText") 

    MyMap = make(map[string]Example) 
    MyMap["key1"] = object 
    fmt.Println(MyMap) 
}