В этом посте будут обсуждаться основные различия, которые вы можете найти между массивами и срезами в Go.
В Golang определение массивов и срезов может выглядеть одинаково, но у них есть определенные различия, которые вам необходимо знать. Кроме того, вы должны знать, когда использовать массивы и когда использовать фрагменты в вашем коде Go. Цель этого поста — дать вам общее представление о различиях между массивами и срезами в языке программирования Go.
Кроме того, перед запуском любого кода, написанного на Go, вам необходимо загрузить и установить Go на свой локальный компьютер (вы можете загрузить Go на свой локальный компьютер по ссылке ниже)
Массивы в Go
Массивы могут быть определены в Golang, как показано ниже.
arr1 := [3]int {7,9,4} // array size is 3
Это самый простой способ объявить массив и присвоить его значения в Golang. Но этот метод можно использовать только тогда, когда вы инициализируете переменную внутри функции. Помимо этого, вы можете использовать два других способа объявить массив в своем коде Go.
ex 1: var arr1 [3]int = [3]int {2,3} ex 2: var arr1 = [3]int {1,7,9}
Когда вы объявляете массив, вам необходимо четко определить его размер, а когда вы инициализируете массив, вы можете назначать значения до этого размера.
После того, как вы определите и настроите значения массива, вы можете легко распечатать их, используя «фмт».
ex: fmt.Println(arr1)
Когда вам нужно изменить значения массива, вы можете использовать соответствующий индекс и соответствующим образом изменить его значение.
ex: arr1[2] = 6 fmt.Println(arr1)
Слайсы в Go
Вы можете использовать тот же метод, который мы использовали для объявления массива для объявления среза в Golang. Но разница в том, что в фрагментах вам не нужно указывать размер для этого конкретного фрагмента. Но в массивах нам пришлось определять его размер при объявлении.
cities := []string {"London", "NYC", "Colombo", "Tokyo"} OR var cities = []string {"London", "NYC", "Colombo", "Tokyo"} OR var cities []string = []string {"London", "NYC", "Colombo", "Tokyo"}
Вы можете использовать любой метод из приведенного выше списка, когда объявляете Slice в своем коде Go. Кроме того, вы можете легко распечатать фрагмент с помощью fmt, как показано ниже.
fmt.Println(cities)
Поскольку срез не имеет определенного размера, мы можем добавлять значения к срезу в дополнение к изменению его существующих значений. Но в массивах мы не могли добавлять значения, и все, что мы могли сделать, это изменить существующие значения.
Вы можете добавлять значения к срезу, используя два разных метода. Если вы хотите добавить значения к исходному фрагменту, вы можете сделать это, как показано ниже.
cities = append(cities, "LA") fmt.Println(cities)
Это добавит LA в конец исходного фрагмента и обновит его. Затем, когда вы распечатываете исходный срез, он будет выводиться как LA вместе с другими названиями городов.
Но в срезах вы можете использовать встроенную функцию append() для добавления значений и он будет создавать еще один слайс и добавлять значения без перезаписи исходного слайса.
ex: cities := []string {"London", "NYC", "Colombo", "Tokyo"} fmt.Println(cities) addCity := append(cities, "Auckland") fmt.Println(addCity) fmt.Println(cities)
В приведенном выше примере я создал отдельную переменную с именем addCity и использовал функцию добавления для добавления значений. Когда вы печатаете переменную addCity, она выводит города вместе с Оклендом, но не перезаписывает исходный фрагмент. Вы можете убедиться в этом, распечатав исходный срез еще раз.
// output [London NYC Colombo Tokyo] [London NYC Colombo Tokyo Auckland] [London NYC Colombo Tokyo]
Кроме того, вы можете использовать эту функцию добавления непосредственно с fmt.Println(), и она также будет делать то же самое, что и выше.
fmt.Println(append(cities, “Auckland”))
Спасибо за чтение!