Структури от данни
Printing tips
В Go може да използвате няколко специални printf
/sprintf
/fprintf
specifiers ("verbs" според документацията). С тяхна помощ може много лесно да извеждате сложни структури от данни. Ето кратък списък на по-полезните specifiers:
-
%v
показва стойността във формата ѝ по подразбиране. Ако използвате%+v
, Go ще изведе и имената на полетата в използваните структури:
fmt.Printf("numbers and strings: %v %v %v\n", 15, 0.0314e2, "string")
fmt.Printf("arrays and slices: %v %v\n", [3]string{"one", "two", "three"}, []int{1, 2, 3})
fmt.Printf("structs with and without '+': %v %+v\n", Person{"Чочко", 27}, Person{"Точко", 11})
// Output:
// numbers and strings: 15 3.14 string
// arrays and slices: [one two three] [1 2 3]
// structs with and without '+': {Чочко 27} {name:Точко age:11}
-
%#v
показва как подадените променливи се дефинират с валиден Go синтаксис:
fmt.Printf("numbers and strings: %#v %#v %#v\n", 15, 0.0314e2, "string")
fmt.Printf("arrays and slices: %#v %#v\n", [3]string{"one", "two", "three"}, []int{1, 2, 3})
fmt.Printf("structs: %#v\n", Person{"Чочко", 27})
// Output:
// numbers and strings: 15 3.14 "string"
// arrays and slices: [3]string{"one", "two", "three"} []int{1, 2, 3}
// structs: main.Person{name:"Чочко", age:0x1b}
-
%T
връща типовете на подадените променливи
type batman int
var a batman = 5
fmt.Printf("%T %T %T %T %T %T %T\n", 15, 0.0314e2, a, "wtf", [3]string{"one", "two", "three"}, []int{1, 2, 3}, Person{"Name", 27})
// Output:
// int float64 main.batman string [3]string []int main.Person