Глагол форматирования %v
Глагол форматирования %v в пакете fmt
выводит значение переменной в формате,
который подходит для этого типа по умолчанию.
Это универсальный глагол, который работает
с любыми типами данных: строками, числами,
слайсами, структурами и другими.
Он используется в функциях fmt.Printf,
fmt.Sprintf и подобных.
Для пользовательских типов глагол %v вызывает
метод String, если он определен.
Это позволяет управлять выводом своих структур.
Синтаксис
fmt.Printf("%v", value)
Пример с числами
Давайте выведем целые числа с помощью глагола
%v:
package main
import "fmt"
func main() {
num := 42
fmt.Printf("%v\n", num)
negative := -10
fmt.Printf("%v\n", negative)
}
Результат выполнения кода:
42
-10
Пример со строками
Глагол %v выводит строки без изменений:
package main
import "fmt"
func main() {
str := "abcde"
fmt.Printf("%v\n", str)
empty := ""
fmt.Printf("%v\n", empty)
}
Результат выполнения кода:
abcde
Пример со слайсами
Слайсы выводятся в квадратных скобках с элементами через пробел:
package main
import "fmt"
func main() {
numbers := []int{1, 2, 3, 4, 5}
fmt.Printf("%v\n", numbers)
letters := []string{"a", "b", "c", "d", "e"}
fmt.Printf("%v\n", letters)
}
Результат выполнения кода:
[1 2 3 4 5]
[a b c d e]
Пример со структурами
Структуры выводятся в фигурных скобках с именами полей и их значениями:
package main
import "fmt"
type Person struct {
Name string
Age int
}
func main() {
person := Person{Name: "John", Age: 30}
fmt.Printf("%v\n", person)
}
Результат выполнения кода:
{John 30}
Пример с пользовательским типом
Для пользовательских типов можно переопределить
вывод через метод String:
package main
import "fmt"
type Point struct {
X, Y int
}
func (p Point) String() string {
return fmt.Sprintf("Point(%d, %d)", p.X, p.Y)
}
func main() {
p := Point{X: 5, Y: 10}
fmt.Printf("%v\n", p)
}
Результат выполнения кода:
Point(5, 10)
Пример с разными типами
Глагол %v адаптируется под каждый тип:
package main
import "fmt"
func main() {
integer := 123
text := "hello"
boolean := true
floatNum := 3.14
fmt.Printf("%v\n", integer)
fmt.Printf("%v\n", text)
fmt.Printf("%v\n", boolean)
fmt.Printf("%v\n", floatNum)
}
Результат выполнения кода:
123
hello
true
3.14
Смотрите также
-
глагол
%+v,
который выводит структуры с именами полей -
глагол
%#v,
который выводит представление в синтаксисе Go -
функцию
fmt.Printf,
которая форматирует и выводит строку -
функцию
fmt.Sprintf,
которая возвращает отформатированную строку