Глагол форматирования %#v
Глагол форматирования %#v выводит Go-синтаксическое представление значения.
В отличие от обычного %v, этот глагол включает имя типа для структур,
а также выводит поля с их именами. Для базовых типов результат аналогичен
использованию литералов в коде Go. Первым параметром в функцию форматирования
передается само значение, которое нужно вывести.
Синтаксис
fmt.Printf("%#v", value)
Пример со строкой и числом
Давайте выведем строку и целое число с помощью глагола %#v:
package main
import "fmt"
func main() {
str := "abcde"
num := 12345
fmt.Printf("string: %#v\n", str)
fmt.Printf("number: %#v\n", num)
}
Результат выполнения кода:
"string: \"abcde\""
"number: 12345"
Как видно, строка выводится в двойных кавычках, а число — как обычный литерал.
Пример со слайсом
Давайте выведем слайс строк с помощью глагола %#v:
package main
import "fmt"
func main() {
slice := []string{"a", "b", "c", "d", "e"}
fmt.Printf("%#v\n", slice)
}
Результат выполнения кода:
"[]string{\"a\", \"b\", \"c\", \"d\", \"e\"}"
Глагол %#v показывает тип слайса и его элементы в формате Go-литерала.
Пример со структурой
Давайте создадим структуру и выведем ее с помощью %#v:
package main
import "fmt"
type User struct {
Name string
Age int
}
func main() {
user := User{Name: "Alice", Age: 30}
fmt.Printf("%#v\n", user)
}
Результат выполнения кода:
"main.User{Name:\"Alice\", Age:30}"
В отличие от обычного %v, глагол %#v выводит имя структуры
(main.User) и имена полей (Name и Age), что
очень удобно для отладки.
Пример с указателем
Давайте посмотрим, как %#v обрабатывает указатели:
package main
import "fmt"
func main() {
num := 42
ptr := &num
fmt.Printf("%#v\n", ptr)
}
Результат выполнения кода:
"(*int)(0xc000012088)"
Глагол %#v показывает тип указателя и его значение (адрес в памяти).
Смотрите также
-
глагол
%v,
который выводит значение в стандартном формате -
глагол
%+v,
который выводит значение с именами полей для структур -
функцию
fmt.Printf,
которая форматирует и выводит строку -
функцию
fmt.Sprintf,
которая возвращает отформатированную строку