Поиск…


Вступление

Строка - это только кусок байта, доступный только для чтения. В 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 также форматирует, но вместо того, чтобы возвращать результат, она печатает строку.

пакет строк

  • strings.Contains

    fmt.Println(strings.Contains("foobar", "foo")) // true
    fmt.Println(strings.Contains("foobar", "baz")) // false
    
  • strings.HasPrefix

    fmt.Println(strings.HasPrefix("foobar", "foo")) // true
    fmt.Println(strings.HasPrefix("foobar", "baz")) // false
    
  • strings.HasSuffix

    fmt.Println(strings.HasSuffix("foobar", "bar")) // true
    fmt.Println(strings.HasSuffix("foobar", "baz")) // false
    
  • strings.Join

    ss := []string{"foo", "bar", "bar"}
    fmt.Println(strings.Join(ss, ", ")) // foo, bar, baz
    
  • strings.Replace

    fmt.Println(strings.Replace("foobar", "bar", "baz", 1)) // foobaz
    
  • strings.Split

    s := "foo, bar, bar"
    fmt.Println(strings.Split(s, ", ")) // [foo bar baz]
    
  • strings.ToLower

    fmt.Println(strings.ToLower("FOOBAR")) // foobar
    
  • strings.ToUpper

    fmt.Println(strings.ToUpper("foobar")) // FOOBAR
    
  • strings.TrimSpace

    fmt.Println(strings.TrimSpace("  foobar  ")) // foobar
    

Подробнее: https://golang.org/pkg/strings/ .



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow