РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1324 of 1593 menu

Функция flate.NewWriter

Функция flate.NewWriter создает новый объект, который сжимает данные с использованием алгоритма DEFLATE. В первый параметр мы передаем выходной поток, в который будут записываться сжатые данные. Второй параметр определяет уровень сжатия: flate.BestSpeed для максимальной скорости, flate.BestCompression для максимальной степени сжатия, или flate.DefaultCompression для сбалансированного режима. Возвращаемое значение - указатель на flate.Writer, который позволяет записывать данные для сжатия.

Синтаксис

flate.NewWriter(w io.Writer, level int) (*flate.Writer, error)

Пример

Давайте создадим компрессор со стандартным уровнем сжатия и запишем строку:

package main import ( "bytes" "compress/flate" "fmt" ) func main() { var buf bytes.Buffer writer, err := flate.NewWriter(&buf, flate.DefaultCompression) if err != nil { fmt.Println("Error:", err) return } defer writer.Close() writer.Write([]byte("abcde")) writer.Close() fmt.Println(buf.Bytes()) }

Результат выполнения кода:

[30 51 75 45 156 2 0 0 0 255 255]

Пример

Давайте используем максимальный уровень сжатия для того же набора данных:

package main import ( "bytes" "compress/flate" "fmt" ) func main() { var buf bytes.Buffer writer, err := flate.NewWriter(&buf, flate.BestCompression) if err != nil { fmt.Println("Error:", err) return } defer writer.Close() writer.Write([]byte("abcde")) writer.Close() fmt.Println(buf.Bytes()) }

Результат выполнения кода:

[30 51 75 45 156 2 0 0 0 255 255]

Пример

Давайте сожмем несколько строк с разными уровнями сжатия:

package main import ( "bytes" "compress/flate" "fmt" ) func main() { data := []byte("12345") var fastBuf bytes.Buffer fastWriter, _ := flate.NewWriter(&fastBuf, flate.BestSpeed) fastWriter.Write(data) fastWriter.Close() var bestBuf bytes.Buffer bestWriter, _ := flate.NewWriter(&bestBuf, flate.BestCompression) bestWriter.Write(data) bestWriter.Close() fmt.Printf("Fast: %d bytes, Best: %d bytes\n", fastBuf.Len(), bestBuf.Len()) }

Результат выполнения кода:

"Fast: 17 bytes, Best: 17 bytes"

Смотрите также

  • функцию flate.NewReader,
    которая создает читатель для распаковки DEFLATE-данных
  • функцию flate.BestSpeed,
    которая задает максимальную скорость сжатия
  • функцию flate.BestCompression,
    которая задает максимальную степень сжатия
  • функцию flate.DefaultCompression,
    которая задает стандартный уровень сжатия
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить