2 回答

TA貢獻1895條經驗 獲得超7個贊
這是記錄器的新實例。如果要指向同一個記錄器,請使用指針
func (c *Client) DoSomethingAwesome() {
scopedLogger := &c.Logger
scopedLogger.LogSomethingAwesome()
}

TA貢獻1820條經驗 獲得超2個贊
這是一個新實例,您可以通過打印每個變量的內存地址來驗證。
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 關注
- 103 瀏覽
添加回答
舉報