Я новичок в Golang и пытаюсь добавить содержимое фрагмента struct в другой экземпляр. Данные добавляются, но они не видны вне метода. Ниже приведен код.
package somepkg
import (
"fmt"
)
type SomeStruct struct {
Name string
Value float64
}
type SomeStructs struct {
StructInsts []SomeStruct
}
func (ss SomeStructs) AddAllStructs(otherstructs SomeStructs) {
if ss.StructInsts == nil {
ss.StructInsts = make([]SomeStruct, 0)
}
for _, structInst := range otherstructs.StructInsts {
ss.StructInsts = append(ss.StructInsts, structInst)
}
fmt.Println("After append in method::: ", ss.StructInsts)
}
Затем в основном пакете я инициализирую структуры и вызываю метод AddAllStructs.
package main
import (
"hello_world/somepkg"
"fmt"
)
func main() {
var someStructs = somepkg.SomeStructs{
[]somepkg.SomeStruct{
{Name: "a", Value: 1.0},
{Name: "b", Value: 2.0},
},
}
var otherStructs = somepkg.SomeStructs{
[]somepkg.SomeStruct{
{Name: "c", Value: 3.0},
{Name: "d", Value: 4.0},
},
}
fmt.Println("original::: ", someStructs)
fmt.Println("another::: ", otherStructs)
someStructs.AddAllStructs(otherStructs)
fmt.Println("After append in main::: ", someStructs)
}
Приведенный выше вывод программы:
original::: {[{a 1} {b 2}]}
another::: {[{c 3} {d 4}]}
After append in method::: [{a 1} {b 2} {c 3} {d 4}]
After append in main::: {[{a 1} {b 2}]}
Я пытаюсь понять, чего мне здесь не хватает, поскольку данные видны в методе. Ценю любую помощь по этому вопросу.
- Anoop