2 回答

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超7個(gè)贊
這是記錄器的新實(shí)例。如果要指向同一個(gè)記錄器,請(qǐng)使用指針
func (c *Client) DoSomethingAwesome() {
scopedLogger := &c.Logger
scopedLogger.LogSomethingAwesome()
}

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超3個(gè)贊
這是一個(gè)新實(shí)例,您可以通過打印每個(gè)變量的內(nèi)存地址來驗(yàn)證。
package main
import "fmt"
type Logger struct {
Endpoint string
}
type Client struct {
Logger Logger
}
func (c *Client) DoSomethingAwesome() {
scopedLogger := c.Logger
p1 := &scopedLogger
// print pointer
fmt.Printf("p1: %p\n", p1)
}
func main() {
cli := &Client{
Logger: Logger{
Endpoint: "something",
},
}
p2 := &cli.Logger
// print pointer
fmt.Printf("p2: %p\n", p2)
cli.DoSomethingAwesome()
}
/* output
p2: 0xc000096220
p1: 0xc000096230
*/
- 2 回答
- 0 關(guān)注
- 106 瀏覽
添加回答
舉報(bào)