Use append when growing a slice dynamically. Use copy when you need independent data:
// Independent copy
original := []int{1, 2, 3}
backup := make([]int, len(original))
copy(backup, original)
Now backup and original are independent. Modifying one doesn't affect the other.