Golang中的占位符詳解
1、%v:值占位符,將值格式化為一個更緊湊的表示形式。
package main
import (
"fmt"
)
type user struct {
name string
age int
}
func main() {
u := user{name: "路多辛", age: 18}
fmt.Printf("The value is: %v\n", u)
m := map[string]interface{}{"name": "路多辛", "age": 18}
fmt.Printf("The value is: %v\n", m)
fmt.Printf("The value is: %v\n", 666)
}2、%+v:相比%v,如果是結構體,會帶上字段名。
package main
import (
"fmt"
)
type user struct {
name string
age int
}
func main() {
u := user{name: "路多辛", age: 18}
fmt.Printf("The value is: %+v\n", u)
m := map[string]interface{}{"name": "路多辛", "age": 18}
fmt.Printf("The value is: %+v\n", m)
fmt.Printf("The value is: %+v\n", 666)
}輸出結果如下:
The value is: {name:路多辛 age:18}
The value is: map[age:18 name:路多辛]
The value is: 666
3、%#v:該值的go語法表示形式。
package main
import (
"fmt"
)
type user struct {
name string
age int
}
func main() {
u := user{name: "路多辛", age: 18}
fmt.Printf("The value is: %#v\n", u)
m := map[string]interface{}{"name": "路多辛", "age": 18}
fmt.Printf("The value is: %#v\n", m)
fmt.Printf("The value is: %#v\n", 666)
}輸出結果如下:
The value is: main.user{name:"路多辛", age:18}
The value is: map[string]interface {}{"age":18, "name":"路多辛"}
The value is: 666
4、%T:值的類型的go語法表示。
package main
import (
"fmt"
)
type user struct {
name string
age int
}
func main() {
u := user{name: "路多辛", age: 18}
fmt.Printf("The value is: %T\n", u)
m := map[string]interface{}{"name": "路多辛", "age": 18}
fmt.Printf("The value is: %T\n", m)
fmt.Printf("The value is: %T\n", 666)
}輸出結果如下:
The value is: main.user
The value is: map[string]interface {}
The value is: int
5、%%:輸出一個字面的百分號。
package main
import (
"fmt"
)
func main() {
fmt.Printf("%%") // 輸出 %
}6、%t:單詞 true 或 false。
package main
import (
"fmt"
)
func main() {
fmt.Printf("%t", true) // 輸出 true
}7、%b:二進制表示形式。
package main
import (
"fmt"
)
func main() {
fmt.Printf("%b", 3) // 輸出:11
}8、%c:相應的Unicode碼值。
package main
import (
"fmt"
)
func main() {
fmt.Printf("%c%c%c的所思所想", 0x8DEF, 0x591A, 0x8F9B)
// 輸出 路多辛的所思所想
}9、%d:十進表示形式。
package main
import (
"fmt"
)
func main() {
fmt.Printf("%d", 0x12) // 輸出 18
}10、%o:八進表示形式。
package main
import (
"fmt"
)
func main() {
fmt.Printf("%o", 9) // 輸出 11
}11、%O:八進表示形式,帶0o前綴。
package main
import (
"fmt"
)
func main() {
fmt.Printf("%O", 9) // 輸出 0o11
}12、%q:將值格式化為一個帶有單引號的字符。
package main
import "fmt"
func main() {
fmt.Printf("%q", 0x8DEF) // 輸出 '路'
}13、%x:將值格式化為一個不帶符號的采用十六進制表示的字符。
package main
import "fmt"
func main() {
fmt.Printf("%x\n", 0x8DEF) // 輸出 8def
fmt.Printf("%x", 13) // 輸出 d
}14、%X:與 %x 不同的是將值格式化為大寫字母形式。
package main
import "fmt"
func main() {
fmt.Printf("%x\n", 0x8DEF) // 輸出 8DEF
fmt.Printf("%x", 13) // 輸出 D
}15、%U:將值格式化為一個帶有前綴 "U+"的字符串形式,Unicode格式。
package main
import "fmt"
func main() {
fmt.Printf("%U\n", 0x8DEF) // 輸出 U+8DEF
fmt.Printf("%U", 13) // 輸出 U+000D
}16、%e:將值格式化為一個帶小數點的科學計數法表示形式。
package main
import "fmt"
func main() {
fmt.Printf("The value is: %e\n", 10.1) // 輸出 1.010000e+01
}17、%E 將值格式化為一個帶小數點的科學計數法表示形式。
package main
import "fmt"
func main() {
fmt.Printf("The value is: %E\n", 10.1) // 輸出 1.010000E+01
}18、%f:將值格式化為帶小數點的浮點數表示形式。
package main
import "fmt"
func main() {
fmt.Printf("The value is: %f\n", 10.1) // 輸出 10.100000
}19、%F:同 %f。
package main
import "fmt"
func main() {
fmt.Printf("The value is: %F\n", 10.1) // 輸出 10.100000
}20、%g:將值格式化為一個合適的表示形式的字符串,可以自動選擇帶小數點的浮點數表示形式或不帶小數點的浮點數表示形式。
package main
import "fmt"
func main() {
fmt.Printf("The value is: %g\n", 10) // 輸出 %!g(int=10)
fmt.Printf("The value is: %g\n", 10.1) // 輸出 10.1
fmt.Printf("The value is: %g\n", 1000000.1) // 輸出 1.0000001e+06
}21、%G:與 %g不同的是,%G會根據值的范圍選擇采用大寫字母或小寫字母表示的形式。
package main
import "fmt"
func main() {
fmt.Printf("The value is: %G\n", 10) // 輸出 %!G(int=10)
fmt.Printf("The value is: %G\n", 10.1) // 輸出 10.1
fmt.Printf("The value is: %G\n", 1000000.1) // 輸出 1.0000001E+06
}22、%s 字符串表示形式。
package main
import "fmt"
func main() {
fmt.Printf("The value is: %s\n", "路多辛的博客") // 輸出 路多辛的博客
fmt.Printf("The value is: %s\n", []byte("路多辛")) // 輸出 路多辛
}23、%p:將值格式化為一個指針的地址表示形式,十六進制表示,前綴 0x。
package main
import "fmt"
func main() {
a := 10
fmt.Printf("The value is: %p\n", &a) // 輸出例如 0xc0000b2008
}24、%.(數字)s:截取指定長度的字符串。
package main
import "fmt"
func main() {
fmt.Printf("The value is: %.3s\n", "路多辛的博客") // 輸出 路多辛
}25、%w:將值格式化為一個錯誤消息的字符串形式。
package main
import (
"errors"
"fmt"
)
func main() {
w := fmt.Errorf("wrapD的錯誤信息-%w", errors.New("原始錯誤信息"))
fmt.Println(w.Error()) // 輸出 wrap的錯誤信息-原始錯誤信息
}以上就是Golang中的占位符詳解的詳細內容,更多關于Golang占位符的資料請關注腳本之家其它相關文章!
相關文章
Golang使用pprof和trace進行診斷和修復性能問題
在?Go?中,開發(fā)人員可以使用強大的內置工具來幫助診斷和修復性能問題,其中兩個工具是?pprof?和?trace?包,下面就跟隨小編一起來了解下如何使用pprof和trace進行診斷和修復性能問題吧2024-01-01

