cpp

Структура Builder

Структура Builder используется для эффективного создания строки из многочисленных фрагментов. Создать объект структуры можно так:

var b1 strings.Builder
fmt.Printf("%T\n", b1) // strings.Builder
b2 := strings.Builder{}
fmt.Printf("%T\n", b2) // strings.Builder

Получение содержимого буфера

Получить содержимое буфера позволяет метод String(). Формат метода:

(*strings.Builder).String() string

Пример:

var b strings.Builder
b.WriteString("test")
fmt.Println(b.String()) // test

Добавление данных в буфер

Добавить данные в буфер позволяют следующие методы:

  • Write() — добавляет содержимое слайса p в буфер. Через переменную n доступно число добавленных байтов. Формат метода:
(*strings.Builder).Write(p []byte) (n int, err error)

Пример:

var b strings.Builder
fmt.Println(b.Write([]byte("test")))  // 4 <nil>
fmt.Println(b.Write([]byte(" тест"))) // 9 <nil>
fmt.Println(b.String())               // test тест
  • WriteString() — добавляет содержимое строки s в буфер. Через переменную n доступно число добавленных байтов. Формат метода:
(*strings.Builder).WriteString(s string) (n int, err error)

Пример:

var b strings.Builder
fmt.Println(b.WriteString("test"))  // 4 <nil>
fmt.Println(b.WriteString(" тест")) // 9 <nil>
fmt.Println(b.String())             // test тест
  • WriteByte() — добавляет байт c в буфер. Формат метода:
(*strings.Builder).WriteByte(c byte) error

Пример:

var b strings.Builder
fmt.Println(b.WriteByte('t')) // <nil>
fmt.Println(b.WriteByte('s')) // <nil>
fmt.Println(b.String())       // ts
  • WriteRune() — добавляет содержимое символа r в буфер. Через переменную n доступно число добавленных байтов. Формат метода:
(*strings.Builder).WriteRune(r rune) (n int, err error)

Пример:

var b strings.Builder
fmt.Println(b.WriteRune('t')) // 1 <nil>
fmt.Println(b.WriteRune('б')) // 2 <nil>
fmt.Println(b.String())       // tб

Получение размера и емкости буфера

Получить размер содержимого буфера в байтах позволяет метод Len(). Формат метода:

(*strings.Builder).Len() int

Пример:

var b strings.Builder
b.WriteString("test тест")
fmt.Println(b.Len()) // 13

Определить емкость буфера позволяет метод Cap(). Формат метода:

(*strings.Builder).Cap() int

Пример:

var b strings.Builder
fmt.Println(b.Cap()) // 0
b.WriteString("test тест")
fmt.Println(b.Cap()) // 16

Увеличить емкость буфера можно с помощью метода Grow(). Формат метода:

(*strings.Builder).Grow(n int)

Пример:

var b strings.Builder
fmt.Println(b.Cap()) // 0
b.Grow(64)
fmt.Println(b.Cap()) // 64
b.WriteString("test тест")
fmt.Println(b.Cap()) // 64

Очистка буфера

Очистить содержимое буфера позволяет метод Reset(). Формат метода:

(*strings.Builder).Reset()

Пример:

var b strings.Builder
b.WriteString("test тест")
fmt.Println(b.Len()) // 13
fmt.Println(b.Cap()) // 16
b.Reset()
fmt.Println(b.Len()) // 0
fmt.Println(b.Cap()) // 0

Учебник Go (Golang)
Учебник Go (Golang) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов

cpp