Строка интерполяции - PullRequest
       9

Строка интерполяции

0 голосов
/ 30 апреля 2018

Попытка интерполировать значение int в строку с использованием форматера %v следующим образом, но ничего не печатается,

package main

import "fmt"

func inc(i int) int {
  return i + 1
}

func main() {
  fmt.Sprintln("inc 1 equal %v", inc(1))
}

Как интерполировать значение int?

Ответы [ 3 ]

0 голосов
/ 30 апреля 2018

fmt.Sprintln возвращает расширенный первый аргумент.

0 голосов
/ 30 апреля 2018

Sprintln форматирует, используя форматы по умолчанию для своих операндов, и возвращает результирующую строку. Между операндами всегда добавляются пробелы и добавляется символ новой строки.

Sprint форматирует строку и возвращает такую ​​строку, ничего не записывает. То, что вы ищете, это Print

Кроме того, вариант ln не анализирует %, он только добавляет символ новой строки в конце строки.

Итак, если вы хотите записать в стандартный вывод, используя формат, вы должны использовать это:

fmt.Printf("inc 1 equal %v", inc(1))
0 голосов
/ 30 апреля 2018

fmt.Sprintln возвращает String, но ничего не печатает. (Название было взято из также запутанно названной функции C sprintf.)

То, что вам нужно, это Printf, но вы должны добавить новую строку самостоятельно:

fmt.Printf("inc 1 equal %v\n", inc(1))
...