1
У меня есть фрагмент, который я хочу изменить (например, я хочу удалить первый элемент), используя функцию. Я думал использовать указатель, но я все еще не могу его проиндексировать. Что я делаю не так?Изменение фрагмента путем передачи его указателя
func change(list *[]int) {
fmt.Println(*list)
*list = *list[1:] //This line screws everything up
}
var list = []int{1, 2, 3}
func main() {
change(&list)
}
+1. В любом случае, срезы являются «ссылочными типами». Таким образом, вы не очень много зарабатываете, передавая указатель и пытаясь изменить его на месте. –
@SimonWhitehead Для этого есть фактическое использование. См. Http://play.golang.org/p/vf1tD7_xc7 для примера, который использует представление среза для создания очереди. – dyoo
Спасибо за пример @dyoo. Я согласен, что существуют конкретные случаи, когда это имеет смысл (например, приемник указателя для типа с псевдонимом в вашем примере). Я не думаю, что это относится к ситуации в OP, хотя (это то, на что я нацелился на мой комментарий). –