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

Функция gzip.NewWriterLevel

Функция gzip.NewWriterLevel создает новый gzip.Writer, который сжимает данные в формат GZIP. В первый параметр передается объект, реализующий интерфейс io.Writer, куда будет записан сжатый вывод, во второй параметр передается уровень сжатия, который может быть одним из предопределенных значений: gzip.BestCompression, gzip.BestSpeed, gzip.DefaultCompression или gzip.NoCompression. Функция возвращает указатель на gzip.Writer и ошибку, если уровень сжатия недопустим.

Синтаксис

func gzip.NewWriterLevel(w io.Writer, level int) (*gzip.Writer, error)

Пример с уровнем BestSpeed

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

package main import ( "bytes" "compress/gzip" "fmt" ) func main() { var buf bytes.Buffer w, err := gzip.NewWriterLevel(&buf, gzip.BestSpeed) if err != nil { fmt.Println("Error:", err) return } defer w.Close() data := []byte("Hello, World! This is a test string for compression.") _, err = w.Write(data) if err != nil { fmt.Println("Error writing:", err) return } err = w.Close() if err != nil { fmt.Println("Error closing:", err) return } fmt.Printf("Compressed data size: %d bytes", buf.Len()) }

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

"Compressed data size: 89 bytes"

Пример с уровнем BestCompression

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

package main import ( "bytes" "compress/gzip" "fmt" ) func main() { var buf bytes.Buffer w, err := gzip.NewWriterLevel(&buf, gzip.BestCompression) if err != nil { fmt.Println("Error:", err) return } defer w.Close() data := []byte("Hello, World! This is a test string for compression.") _, err = w.Write(data) if err != nil { fmt.Println("Error writing:", err) return } err = w.Close() if err != nil { fmt.Println("Error closing:", err) return } fmt.Printf("Compressed data size: %d bytes", buf.Len()) }

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

"Compressed data size: 83 bytes"

Пример с обработкой ошибки

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

package main import ( "bytes" "compress/gzip" "fmt" ) func main() { var buf bytes.Buffer w, err := gzip.NewWriterLevel(&buf, 99) if err != nil { fmt.Println("Error:", err) return } defer w.Close() fmt.Println("Writer created successfully") }

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

"Error: gzip: invalid compression level: 99"

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

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