目的:理解Golang *string
和string
的區別Golang中的*字符串和字符串之間有什麼區別?
嘗試
func passArguments() {
username := flag.String("user", "root", "Username for this server")
flag.Parse()
fmt.Printf("Your username is %q.", *username)
fmt.Printf("Your username is %q.", username)
}
結果:
Your username is "root".Your username is %!q(*string=0xc820072200)
但當*字符串被分配到一條條NG:
bla:=*username
fmt.Printf("Your username is %q.", bla)
它能夠重新打印字符串:
Your username is "root".Your username is %!q(*string=0xc8200781f0).Your username is "root".
問題
- 爲什麼是*字符串=字符串,如!顯示:
"root"
與%!q(*string=0xc8200781f0)
? - 在其他情況下,應該使用*字符串 而不是字符串,爲什麼?
- 爲什麼可以將 *字符串分配給字符串變量,而字符串顯示不同,例如,顯示:
"root"
與%!q(*string=0xc8200781f0)
?
變量有*標記是指針,或在存儲器中的地址(把它看作當變量是房屋中的郵件地址)。有關更多信息,請參閱https://tour.golang.org/moretypes/1。 – ti7