Строки

// Обозначаются либо одинарными кавычками, либо обратными апострофами
test1 := '\"test\"' // через кавычки: могут использовать экранированные последовательности, но пишутся в одну строку
test2 := `"Test 
    string"`  // через обратные апострофы: не могут исп экр последовательности, но могу писаться в несколько строк

// Конкатенация    
/// Метод 1
test3 := test1 + test2
test3 += test2

/// Метод 2: like Python
заполняем срез со строками []string
далее strings.Join()

/// Метод 3: like Java (StringBuilder), самый эффективный
var buffer bytes.Buffer
for {
    if piece, ok := someStrings(); ok {
        buffer.WriteString(piece)
    } else {
        break
    }
}
fmt.Print(buffer.String(), "\n")

// Подстроки
test3[n:m], test[:m], ..

// Размеры
len(test3)  // Количество байт
len([]rune(test3))  // Количество символов, или через utf8.RuneCountInString()

// Преобразование типов
[]rune(test1)  // string -> срез
[]byte(test1)  // string -> []byte. 
string(символы)  // []int32 или []rune -> string
string(байты)  // []byte -> string
string(int1)  // int -> string, ex: 65 -> "A"
strconv.Itoa(int1)  // int -> (string, err), ex: 65 -> "65", nil
fmt.Sprintf(x)  // x любого типа -> string, ex: 65 -> "65"

Last updated