Go语言每天一篇(day79)----类型的 String() 方法

一、今日题目:
  1. 下面代码有什么问题?
    func main() {
    	c:=&ConfigOne{}
    	c.String()
    }
    
    type ConfigOne struct {
    	Daemon string
    }
    
    func (c *ConfigOne) String() string  {
    	return fmt.Sprintf("print:%v",c)
    }
    
二、答案与解析:

无限递归循环,栈溢出。

知识点:如果类型定义了String() 方法,使用Printf()、Print()、Println()、Sprintf()等格式化输出时会自动使用String()方法。这样就会无限递归循环。
若想不形成死循环,可将代码修改为:

func main() {
	c:=&ConfigOne{Daemon:"小丽吖"}
	name:=c.String()
	fmt.Println(name)
}

type ConfigOne struct {
	Daemon string
}

func (c *ConfigOne) String() string  {
	return c.Daemon
}

输出结果:小丽吖

声明: 首先感谢Seekload大佬,因为Go语言每天一篇是看的 "Golang来啦" 的公众号,作者每天会发布两道有关go语言的题目。对于我这种小白来说,看到题目进行实践然后查询资料,最后看第二天的答案分析,进行总结转化成自己的东西。希望自己能坚持下去,每天进步一点点。如有需要欢迎关注大佬的公众号。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值