2 回答
TA贡献1895条经验 获得超7个赞
这是记录器的新实例。如果要指向同一个记录器,请使用指针
func (c *Client) DoSomethingAwesome() {
scopedLogger := &c.Logger
scopedLogger.LogSomethingAwesome()
}
TA贡献1820条经验 获得超3个赞
这是一个新实例,您可以通过打印每个变量的内存地址来验证。
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 关注
- 158 浏览
添加回答
举报
