GO MASTERs! не могли бы вы посоветовать?Массивная крышка перезапись
с make ([] int, len, cap), позволяет GO разрешить инициализацию массива одновременно с объявлением?
myArray := make([]int, 3, 10){1,2,3}
Я вижу колпачок (туАггау) изменилась равно Len (MyArray) в случае ниже. Что имеет фундаментальное значение?
<ex> myArray := make([]int, 3, 10) myArray = []int{1,2,3} fmt.Println("len:"len(myArray),", cap:",cap(myArray))
Len: 3, крышка: 3
Почему крышка (туАггау) составляет 3 вместо 10, как я декларации?
Я инициализировал отдельный элемент напрямую. И это работает, как я хотел
<ex> myArray := make([]int, 3, 10) myArray[0] = 1 myArray[1] = 2 myArray[2] = 3 fmt.Println("len:"len(myArray),", cap:",cap(myArray))
Len: 3, колпачок: 10
Я бы сказал, что вы объявляете только ломтик междунар и выделить экземпляр с длиной 3 и колпачком 10. Вы может объявлять и создавать экземпляры в одном выражении из-за короткой формы объявления. – Uvelichitel
Спасибо Uvelichitel, но не ясно, если вы имели в виду, что я могу сделать экземпляр даже с make? Второй способ, который [] int {***} может достичь, но если «make()» может сделать или нет, это мой вопрос. – GoGo
Да, я не уверен, что @Uvelichitel пытается передать. Оператор 'make' выделяет срез длиной 3, емкость 10.« x: = [] int {1,2,3} »называется« составным литералом », и, как и при создании механики, поскольку нет возможности (нет, где поставить эту информацию), емкость по умолчанию равна длине (это работает одинаково, когда вы вызываете make, опускающий третий аргумент). – evanmcdonnal