GO_INTERVIEW_LIB Telegram 595
💬 Почему копирование структур в Go может привести к неожиданным результатам? Приведите пример.

Копирование структур может быть проблематичным, если структура содержит указатели или срезы, которые при копировании продолжают ссылаться на ту же область памяти, что и оригинал. Например, структура bytes.Buffer содержит срез []byte. Если скопировать объект Buffer, методы, вызванные на копии, могут изменять данные в оригинале, так как оба объекта используют одну и ту же память.

package main

import (
"bytes"
"fmt"
)

func main() {
// Создаем оригинальный буфер
original := bytes.Buffer{}
original.WriteString("Hello")

// Копируем буфер
copyBuffer := original

// Добавляем данные в копию
copyBuffer.WriteString(", World!")

// Проверяем содержимое оригинала
fmt.Println(original.String()) // Вывод: "Hello, World!"
}


В этом примере срез []byte в копии copyBuffer ссылается на тот же массив, что и в оригинале original. Поэтому изменения в одном буфере затрагивают другой.
👍13



tgoop.com/go_interview_lib/595
Create:
Last Update:

💬 Почему копирование структур в Go может привести к неожиданным результатам? Приведите пример.

Копирование структур может быть проблематичным, если структура содержит указатели или срезы, которые при копировании продолжают ссылаться на ту же область памяти, что и оригинал. Например, структура bytes.Buffer содержит срез []byte. Если скопировать объект Buffer, методы, вызванные на копии, могут изменять данные в оригинале, так как оба объекта используют одну и ту же память.

package main

import (
"bytes"
"fmt"
)

func main() {
// Создаем оригинальный буфер
original := bytes.Buffer{}
original.WriteString("Hello")

// Копируем буфер
copyBuffer := original

// Добавляем данные в копию
copyBuffer.WriteString(", World!")

// Проверяем содержимое оригинала
fmt.Println(original.String()) // Вывод: "Hello, World!"
}


В этом примере срез []byte в копии copyBuffer ссылается на тот же массив, что и в оригинале original. Поэтому изменения в одном буфере затрагивают другой.

BY Библиотека Go для собеса | вопросы с собеседований


Share with your friend now:
tgoop.com/go_interview_lib/595

View MORE
Open in Telegram


Telegram News

Date: |

Click “Save” ; Earlier, crypto enthusiasts had created a self-described “meme app” dubbed “gm” app wherein users would greet each other with “gm” or “good morning” messages. However, in September 2021, the gm app was down after a hacker reportedly gained access to the user data. In the “Bear Market Screaming Therapy Group” on Telegram, members are only allowed to post voice notes of themselves screaming. Anything else will result in an instant ban from the group, which currently has about 75 members. Polls The Channel name and bio must be no more than 255 characters long
from us


Telegram Библиотека Go для собеса | вопросы с собеседований
FROM American