This is a go lang Printf cheat sheet post. Essentially it is very similar to the one in C. Just like the one in C, Printf really prints the string in a formatted way. It is very convenient to have a cheat sheet since I always forget unless I use it frequently. This mainly focuses on examples.
print type of variable %T
var intNum int var floatNum float64 var boolVal bool var strVal string fmt.Printf("%T\n", intNum) fmt.Printf("%T\n", floatNum) fmt.Printf("%T\n", boolVal) fmt.Printf("%T\n", strVal) // output int float64 bool string
print int type %d
This prints integer type. It will perform type check and will give you a warning that type doesn’t match. And of course the result format will be odd.
age := 21 fmt.Printf("age: %d\n", age) fmt.Printf("age: %s\n", age) // output age: 21 age: %!s(int=21)
print float %f
%f prints floating numbers. Since this is a floating number, you can control the precision with “.<number>”
Increasing precision means the floating number will be more precise.
floatNum := 224.701 fmt.Printf("num: %f\n", floatNum) fmt.Printf("num: %.0f\n", floatNum) fmt.Printf("num: %.1f\n", floatNum) fmt.Printf("num: %.2f\n", floatNum) fmt.Printf("num: %.3f\n", floatNum) fmt.Printf("num: %.4f\n", floatNum) fmt.Printf("num: %.5f\n", floatNum) // output num: 224.701000 num: 225 num: 224.7 num: 224.70 num: 224.701 num: 224.7010 num: 224.70100
print bool %t
male := true female := false fmt.Printf("are you male?: %t\n", male) fmt.Printf("are you femail?: %t\n", female) //output are you male?: true are you femail?: false
print string type %s, %q
Those print the strings. However, there is a difference between them. %s just prints the string itself but %q prints with double quotes.
Note that \n is just an escape sequence providing a new line. This also performs type checks.
name := "Google" fmt.Printf("%s\n", name) fmt.Printf("%q\n", name) // output Google "Google"
print any value %v
This prints all the provided values. It’s very convenient but it doesn’t guarantee any type safety. For example, what if you only want to print int instead of string or float? %v will not check anything and print as-is.
name := "Google" val := 1 floatVal := 1.123 fmt.Printf("%v %v %v\n", name, val, floatVal) // output Google 1 1.123
Argument Index
Typically you have to provide a value for each verb in the Printf format string. However, there is an exception to this rule. You can refer to the already provided variable. This is called argument index. Note that [1] refers to the first argument which is “name”. [2] refers to the second argument. Why does the index start from 1? It’s because index 0 of the Printf is the format string.
name := "NY Comdori" job := "software engineer" fmt.Printf("%v is a %v. Being %[2]v is fun! Good luck %[1]v!\n", name, job) // output NY Comdori is a software engineer. Being software engineer is fun! Good luck NY Comdori!