Поиск…
Вступление
Строка - это только кусок байта, доступный только для чтения. В Go строковый литерал всегда будет содержать действительное представление UTF-8 его содержимого.
Синтаксис
- variableName: = "Hello World" // объявляет строку
- variableName: = `Hello World` // объявляет строчную литералную строку
- variableName: = "Hello" + "World" // объединяет строки
- substring: = "Hello World" [0: 4] // получить часть строки
- letter: = "Hello World" [6] // получить символ строки
- fmt.Sprintf ("% s", "Hello World") // форматирует строку
Строковый тип
Тип string
позволяет хранить текст, который представляет собой последовательность символов. Существует несколько способов создания строк. Литеральная строка создается путем написания текста между двойными кавычками.
text := "Hello World"
Поскольку строки Go поддерживают UTF-8, предыдущий пример является абсолютно допустимым. Строки содержат произвольные байты, которые не обязательно означают, что каждая строка будет содержать допустимый UTF-8, но строковые литералы всегда будут содержать действительные последовательности UTF-8.
Нулевое значение строк - это пустая строка ""
.
Строки могут быть объединены с помощью оператора +
.
text := "Hello " + "World"
Строки также могут быть определены с использованием обратных циклов ``
. Это создает строковый литерал, который означает, что символы не будут экранированы.
text1 := "Hello\nWorld"
text2 := `Hello
World`
В предыдущем примере text1
избегает символа \n
который представляет новую строку, в то время как text2
содержит новый символ строки напрямую. Если вы сравните text1 == text2
результат будет true
.
Тем не менее, text2 := `Hello\nWorld`
не избежит символа \n
что означает, что строка содержит текст Hello\nWorld
без новой строки. Это будет эквивалент ввода text1 := "Hello\\nWorld"
.
Форматирование текста
Пакет fmt
реализует функции для печати и форматирования текста с использованием глаголов формата. Глаголы представлены знаком процента.
Общие глаголы:
%v // the value in a default format
// when printing structs, the plus flag (%+v) adds field names
%#v // a Go-syntax representation of the value
%T // a Go-syntax representation of the type of the value
%% // a literal percent sign; consumes no value
Boolean:
%t // the word true or false
Integer:
%b // base 2
%c // the character represented by the corresponding Unicode code point
%d // base 10
%o // base 8
%q // a single-quoted character literal safely escaped with Go syntax.
%x // base 16, with lower-case letters for a-f
%X // base 16, with upper-case letters for A-F
%U // Unicode format: U+1234; same as "U+%04X"
Плавающие и сложные составляющие:
%b // decimalless scientific notation with exponent a power of two,
// in the manner of strconv.FormatFloat with the 'b' format,
// e.g. -123456p-78
%e // scientific notation, e.g. -1.234456e+78
%E // scientific notation, e.g. -1.234456E+78
%f // decimal point but no exponent, e.g. 123.456
%F // synonym for %f
%g // %e for large exponents, %f otherwise
%G // %E for large exponents, %F otherwise
Строка и фрагмент байтов (обрабатываются эквивалентно этим глаголам):
%s // the uninterpreted bytes of the string or slice
%q // a double-quoted string safely escaped with Go syntax
%x // base 16, lower-case, two characters per byte
%X // base 16, upper-case, two characters per byte
Указатель:
%p // base 16 notation, with leading 0x
Используя глаголы, вы можете создавать строки, конкатенирующие несколько типов:
text1 := fmt.Sprintf("Hello %s", "World")
text2 := fmt.Sprintf("%d + %d = %d", 2, 3, 5)
text3 := fmt.Sprintf("%s, %s (Age: %d)", "Obama", "Barack", 55)
Функция Sprintf
форматирует строку в первом параметре, заменяя глаголы значением значений в следующих параметрах и возвращает результат. Как и Sprintf
, функция Printf
также форматирует, но вместо того, чтобы возвращать результат, она печатает строку.
пакет строк
-
fmt.Println(strings.Contains("foobar", "foo")) // true fmt.Println(strings.Contains("foobar", "baz")) // false
-
fmt.Println(strings.HasPrefix("foobar", "foo")) // true fmt.Println(strings.HasPrefix("foobar", "baz")) // false
-
fmt.Println(strings.HasSuffix("foobar", "bar")) // true fmt.Println(strings.HasSuffix("foobar", "baz")) // false
-
ss := []string{"foo", "bar", "bar"} fmt.Println(strings.Join(ss, ", ")) // foo, bar, baz
-
fmt.Println(strings.Replace("foobar", "bar", "baz", 1)) // foobaz
-
s := "foo, bar, bar" fmt.Println(strings.Split(s, ", ")) // [foo bar baz]
-
fmt.Println(strings.ToLower("FOOBAR")) // foobar
-
fmt.Println(strings.ToUpper("foobar")) // FOOBAR
-
fmt.Println(strings.TrimSpace(" foobar ")) // foobar
Подробнее: https://golang.org/pkg/strings/ .