分享
  1. 首页
  2. 文章

golang 函数定义及其接口实例

u012798391 · · 1563 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

 
/有返回值且返回一个
funcmax(aint,bint)int{
ifa>b{
returna
}
returnb
}
//有返回值且返回二个
funcmulti_ret(keystring)(int,bool){
m:=map[string]int{"ont":1,"two":2,"three":3}
varerrbool
varvalint
val,err=m[key]
returnval,err
}
//多个参数,相当于传进取一个数组
funcsum(nums...int){
fmt.Println(nums,"")
total:=0
for_,num:=rangenums{
total+=num
}
fmt.Println(total)
}
//返回值为函数
funcnextNum()func()int{
i,j:=0,1
returnfunc()int{
vartmp=i+j
i,j=j,tmp
returntmp
}
}
//递归返回整数
funcfact(nint)int{
ifn==0{
return1
}
returnn*fact(n-1)
}
//结构
typerectstruct{
widthfloat64
heightfloat64
}
//结构函数
func(r*rect)area()float64{
returnr.width*r.height
}
func(r*rect)perimeter()float64{
return2*(r.height*r.height)
}
//结构
typecirclestruct{
radiusfloat64
}
func(c*circle)area()float64{
returnmath.Pi*c.radius*c.radius
}
func(c*circle)perimeter()float64{
return2*math.Pi*c.radius
}
//接口注意rect和circle均实现了shape接口
typeshapeinterface{
area()float64
perimeter()float64
}
funcinterface_test(){
r:=rect{width:2,height:4}
c:=circle{radius:4.3}
s:=[]shape{&r,&c}
for_,sh:=ranges{
fmt.Println(sh)
fmt.Println(sh.area())
fmt.Println(sh.perimeter())
}
}
//自定义错误
typemyErrorstruct{
argint
errMsgstring
}
func(e*myError)Error()string{
returnfmt.Sprintf("%d-%s",e.arg,e.errMsg)
}
funcerror_test(argint)(int,error){
ifarg<0{
return-1,errors.New("BadArguments,negtive")
}elseifarg>256{
return-1,&myError{arg,"BadArguments,toolarge"}
}
returnarg*arg,nil
}
funcCopyFile(dstNamestring,srcNamestring)(writtenint64,errerror){
src,err:=os.Open(srcName)
iferr!=nil{
fmt.Println("openfailed")
}
defersrc.Close()
dst,err:=os.Create(dstName)
iferr!=nil{
fmt.Println("Createfailed")
return
}
deferdst.Close()
returnio.Copy(dst,src)
}




查看原文:http://www.zoues.com/2016/10/27/golang-%e5%87%bd%e6%95%b0%e5%ae%9a%e4%b9%89%e5%8f%8a%e5%85%b6%e6%8e%a5%e5%8f%a3%e5%ae%9e%e4%be%8b/

有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:u012798391

查看原文:golang 函数定义及其接口实例

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
1563 次点击
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏