#go
#Вперед
Вопрос:
С помощью приведенного ниже кода я могу открыть файл и разделить его содержимое в каждом чате |
. Однако мой размер файла огромен, и мне нужно оптимизировать использование памяти. Если вы внимательно посмотрите на приведенный ниже код, каждый раз, когда мне приходится дублировать использование памяти, просто чтобы присвоить значение другой переменной (другого типа).
Как я могу разделить содержимое файла на определенный символ с наименьшим количеством ненужной памяти?
temp3292,_ := ioutil.ReadFile("C:\file.txt");
temp1114 := string(temp3292);
//Cleaning memory.
temp3292 = nil;
temp5078 := strings.Split(strings.Trim(temp1114,"|"),"|");
//Cleaning memory again.
temp1114 = "";
my_array := map[string]bool{};
for _,valor67 := range temp5078 {
my_array[valor67] = true;
}
//Again, cleaning memory again.
temp5078 = nil;
Комментарии:
1. Строки более удобны, но менее эффективны. Если вы ищете эффективность, вам нужно придерживаться
[]byte
.
Ответ №1:
Чтобы избежать дублирования данных в памяти, оставайтесь в байтовых фрагментах и просто перережьте их:
fileContent,_ := ioutil.ReadFile("C:\file.txt");
sepPos := bytes.Index(fileContent, []byte('|'));
firstHalf := fileContent[:sepPos]
secondHalf := fileCOntent[sepPos 1:]
Вы найдете полезные помощники в bytes
пакете и некоторые основы в блоге Go.