Go lang вложенный размер выделенного фрагмента - PullRequest
0 голосов
/ 17 мая 2018

Для приведенного ниже кода я хочу знать, как я могу выделить размер для val фрагмента mystruct структуры?

            package main

            import (
                "fmt"
            )

            type mystruct struct {
                val []int
                key int
            }

            type mystruct2 struct {
                mm []mystruct
            }

            func main() {
                s1 := make([]mystruct, 2)
                fmt.Println(s1)
            }

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Использование цикла для выделения среза во вложенном struct:

s1 := make([]mystruct, 2)
for i := range s1 {
    s1[i].val = make([]int, 2)  // replace 2 with whatever size you want
}
0 голосов
/ 17 мая 2018

Если вы спрашиваете, как распределить срез val с количеством n при инициализации структуры mystruct, вы можете сделать это следующим образом:

m := mystruct{
  val: make([]int, 2), // or make([]int, 0, 2)
}

Вы также можете предоставить заводские функции, такие как:

func newMystruct(n int) mystruct {
  return mystruct{
    val: make([]int, n), // or make([]int, 0, n)
  }
}
...