Skip to content

Instantly share code, notes, and snippets.

@debedb
Last active November 25, 2022 09:57
Show Gist options
  • Save debedb/5192127be74d9b4edaa4d2d674d484cf to your computer and use it in GitHub Desktop.
Save debedb/5192127be74d9b4edaa4d2d674d484cf to your computer and use it in GitHub Desktop.
Go: Arrays vs slices
package main
import (
"fmt"
)
func slices2() {
slice1 := []string{"Ferrari", "Honda", "Ford"}
slice2 := slice1[:]
fmt.Println("Slice1: ", slice1)
fmt.Println("Slice2: ", slice2)
slice1[0] = "Peugeot"
slice2[0] = "Renault"
// They're the same: slice2 is a copy of slice1 but they both point to same array.
fmt.Println("Slice1: ", slice1)
fmt.Println("Slice2: ", slice2)
}
func slices1() {
carsArr := [...]string{"Ferrari", "Honda", "Ford"}
cars := carsArr[:]
fmt.Println("Cars: ", cars)
fmt.Println("CarsArr: ", carsArr)
// Cars: [Ferrari Honda Ford]
// CarsArr: [Ferrari Honda Ford]
cars[1] = "Mercedes"
fmt.Println("Cars: ", cars)
fmt.Println("CarsArr:", carsArr)
// Cars: [Ferrari Mercedes Ford]
// CarsArr: [Ferrari Mercedes Ford]
cars = append(cars, "Toyota")
fmt.Println("Cars: ", cars)
fmt.Println("CarsArr: ", carsArr)
// Cars: [Ferrari Mercedes Ford Toyota]
// CarsArr: [Ferrari Mercedes Ford]
cars[1] = "Lamborghini"
fmt.Println("Cars: ", cars)
fmt.Println("CarsArr: ", carsArr)
// Cars: [Ferrari Lamborghini Ford Toyota]
// CarsArr: [Ferrari Mercedes Ford]
cars2 := cars[:]
fmt.Println("Cars ", cars)
fmt.Println("Cars 2", cars2)
// Cars [Ferrari Lamborghini Ford Toyota]
// Cars 2 [Ferrari Lamborghini Ford Toyota]
cars[0] = "Zhiguli"
fmt.Println("Cars ", cars)
fmt.Println("Cars 2", cars2)
// Cars [Zhiguli Lamborghini Ford Toyota]
// Cars 2 [Zhiguli Lamborghini Ford Toyota]
}
func main() {
slices1()
slices2()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment