Структури от данни

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