为了账号安全,请及时绑定邮箱和手机立即绑定

Go语言圣经中函数调用的疑问

Go语言圣经中函数调用的疑问

慕容3067478 2019-05-24 15:43:44
cf/main.go//Copyright©2016AlanA.A.Donovan&BrianW.Kernighan.//License:https://creativecommons.org/l...//Seepage43.//!+//CfconvertsitsnumericargumenttoCelsiusandFahrenheit.packagemainimport("fmt""os""strconv""gopl.io/ch2/tempconv")funcmain(){for_,arg:=rangeos.Args[1:]{t,err:=strconv.ParseFloat(arg,64)iferr!=nil{fmt.Fprintf(os.Stderr,"cf:%v\n",err)os.Exit(1)}f:=tempconv.Fahrenheit(t)c:=tempconv.Celsius(t)fmt.Printf("%s=%s,%s=%s\n",f,tempconv.FToC(f),c,tempconv.CToF(c))}}//!-tempconv/tempconv.go//Copyright©2016AlanA.A.Donovan&BrianW.Kernighan.//License:https://creativecommons.org/l...//!+//PackagetempconvperformsCelsiusandFahrenheitconversions.packagetempconvimport"fmt"typeCelsiusfloat64typeFahrenheitfloat64const(AbsoluteZeroCCelsius=-273.15FreezingCCelsius=0BoilingCCelsius=100)func(cCelsius)String()string{returnfmt.Sprintf("%g°C",c)}func(fFahrenheit)String()string{returnfmt.Sprintf("%g°F",f)}//!-tempconv/conv.go//Copyright©2016AlanA.A.Donovan&BrianW.Kernighan.//License:https://creativecommons.org/l...//Seepage41.//!+packagetempconv//CToFconvertsaCelsiustemperaturetoFahrenheit.funcCToF(cCelsius)Fahrenheit{returnFahrenheit(c*9/5+32)}//FToCconvertsaFahrenheittemperaturetoCelsius.funcFToC(fFahrenheit)Celsius{returnCelsius((f-32)*5/9)}//!-上面程序中的f:=tempconv.Fahrenheit(t)c:=tempconv.Celsius(t)是怎么调用的以下方法呢:func(cCelsius)String()string{returnfmt.Sprintf("%g°C",c)}func(fFahrenheit)String()string{returnfmt.Sprintf("%g°F",f)}这两个方法都是有函数名String的。不太明白这个调用过程。
查看完整描述

2 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

许多类型都会定义一个String方法,因为当使用fmt包的打印方法时,将会优先使用该类型对应的String方法返回的结果打印我明白了。。
                            
查看完整回答
反对 回复 2019-05-24
  • 2 回答
  • 0 关注
  • 644 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信