猿问

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

cf/main.go//Copyright©2016AlanA.A.Donovan&BrianW.Kernighan.//License:https://creativecommons.org/l...
//Seepage43.//!+
//CfconvertsitsnumericargumenttoCelsiusandFahrenheit.packagemain
import(
"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.packagetempconv
import"fmt"
typeCelsiusfloat64typeFahrenheitfloat64
const(
AbsoluteZeroCCelsius=-273.15
FreezingCCelsius=0
BoilingCCelsius=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的。不太明白这个调用过程。
慕容3067478
浏览 645回答 2
2回答

DIEA

许多类型都会定义一个String方法,因为当使用fmt包的打印方法时,将会优先使用该类型对应的String方法返回的结果打印我明白了。。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答