Начало работы с Golang: Причина, по которой не работает функция копирования, молниезащита.

В следующем коде в выводе ничего нет, но функция копирования действительно выполняется, так почему же так?

	var iArray1 = []int{0, 1, 2, 3, 4, 5, 6}
	var iArray2  []int
	copy(iArray2, iArray1)
	for _, v := range iArray2 {
		fmt.Printf("v: %v\n", v)
	}

Изучив данные, я обнаружил, что исходная функция copy() в go копирует в соответствии с количеством элементов меньшего фрагмента массива. Таким образом, причина, по которой приведенное выше выполнение не имеет результатов, заключается в том, что срез с именем iArray2 не имеет начального значения и определенной длины после определения, поэтому по умолчанию используется значение 0, поэтому, хотя iArray1 копируется в iArray2, копируется только 0, поэтому выходной результат отсутствует.

Затем давайте изменим его и присвоим iArray2 начальную длину.

Посмотрите внимательно на положение моей красной стрелки, дайте iArray2 десять длин, затем выполните copy() и скопируйте iArray1 в iArray2. После нахождения вывода копирование действительно прошло успешно, но все следующие элементы равны 0. Причина все же в том, что iArray1 копирует в iArray2 только семь значений, поэтому оставшиеся три значения в iArray1 не перезаписываются, и по умолчанию они по-прежнему равны 0.

copy() также можно использовать следующим образом

Грамматика на языке го действительно состоит из множества мелких деталей, очень изобретательных, и друзья, которые учатся вместе, могут обсудить ее вместе.

Supongo que te gusta

Origin blog.csdn.net/weixin_45963929/article/details/126103236
Recomendado
Clasificación