当前位置: 首页 > news >正文

2023网站seoyw1139com最新跳转接口p

2023网站seo,yw1139com最新跳转接口p,网络公司注册条件,510企业网站系统源码从 A Tour of Go 可以看到一些 Go 比较特殊的点 文章目录 变量声明时,类型放在后面Array 的引用 Slicereceiver 和 argumentbuilt-int特殊接口Error 变量声明时,类型放在后面 var i, j int 1, 2declaration-syntax Array 的引用 Slice slices-intro …

从 A Tour of Go 可以看到一些 Go 比较特殊的点

文章目录

    • 变量声明时,类型放在后面
    • Array 的引用 Slice
    • receiver 和 argument
    • built-int特殊接口Error

变量声明时,类型放在后面

var i, j int = 1, 2

declaration-syntax

Array 的引用 Slice

slices-intro

receiver 和 argument

receiver 习惯用于改变值,尤其是大的struct

type Vertex struct {X, Y float64
}func (v *Vertex) Scale(f float64) {v.X = v.X * fv.Y = v.Y * f
}

argument 就是method的参数,习惯用于业务逻辑

type Vertex struct {X, Y float64
}func AbsFunc(v Vertex) float64 {return math.Sqrt(v.X*v.X + v.Y*v.Y)
}

receiver 用于实现接口,用于业务逻辑

type Abser interface {Abs() float64
}func main() {var a Abserv := Vertex{3, 4}a = &v // a *Vertex implements Abserfmt.Println(a.Abs())
}type Vertex struct {X, Y float64
}func (v *Vertex) Abs() float64 {return math.Sqrt(v.X*v.X + v.Y*v.Y)
}

built-int特殊接口Error

package mainimport ("fmt""math"
)type ErrNegativeSqrt float64func (x ErrNegativeSqrt) Error() string {return fmt.Sprintf("cannot Sqrt negative number: %f", x)
}func Sqrt2(x float64) (float64, error) {fmt.Println("processing.......")if x>0 {z := float64(1)z = 0.5fmt.Println(z)for i:=0; math.Abs(z*z -x)>0.00001; i++ {z = z - (z*z -x )/(2*z)fmt.Println("i", i, "z", z, "z*z -x", z*z -x)}fmt.Println("finished.")return z, nil} else {return 0, ErrNegativeSqrt(x)}}func main() {fmt.Println(Sqrt2(2))fmt.Println(Sqrt2(-2))
}

这里面如果在实现Error接口的时候调fmt.Sprintf用了%v,会再次调x.Error() 进行无限循环, 如果用%v 的话先把值转换出来float64(x)

func (x ErrNegativeSqrt) Error() string {return fmt.Sprintf("cannot Sqrt negative number: %v", float64(x))
}

查看golang源码 https://cs.opensource.google/go/go/+/refs/tags/go1.17:src/fmt/print.go;l=617

	// If we're doing Go syntax and the argument knows how to supply it, take care of it now.if p.fmt.sharpV {if stringer, ok := p.arg.(GoStringer); ok {handled = truedefer p.catchPanic(p.arg, verb, "GoString")// Print the result of GoString unadorned.p.fmt.fmtS(stringer.GoString())return}} else {// If a string is acceptable according to the format, see if// the value satisfies one of the string-valued interfaces.// Println etc. set verb to %v, which is "stringable".switch verb {case 'v', 's', 'x', 'X', 'q':// Is it an error or Stringer?// The duplication in the bodies is necessary:// setting handled and deferring catchPanic// must happen before calling the method.switch v := p.arg.(type) {case error:handled = truedefer p.catchPanic(p.arg, verb, "Error")p.fmtString(v.Error(), verb)returncase Stringer:handled = truedefer p.catchPanic(p.arg, verb, "String")p.fmtString(v.String(), verb)return}}}return false
}

A Tour of Go 习题解答

A Tour of Go 习题解答 2

学习字典,随时查

http://www.yayakq.cn/news/242422/

相关文章:

  • 网站建设后期修改齐河县工程建设监理有限公司网站
  • 做网站建设有前景吗一站传媒seo优化
  • 广东网站建设微信网站定制无锡产品排名优化
  • 做网站目的团购网站怎么推广
  • 什么网站容易做流量wordpress后台添加主题设置
  • 网站建设安全标准北京网站建设求职简历
  • 深圳万齐创享网站建设福建省建住房建设部网站
  • 百度怎样建立一个网站域名网站排名
  • 做湲兔费网站视颍营销推广方案案例
  • 广州门户网站开发制作网站高手
  • 做网站用笔记本做服务器怎么建设QQ网站
  • 网站网页直播怎么做杭州百度推广网站建设
  • 东莞樟木头网站制作营销活动策划方案
  • 香水网站模板如果建设管理运营一个网站
  • iis7配置多个网站软文范例100字
  • 开发网站用php还是jsp桂阳网页定制
  • php 企业网站系统下载临沂网站开发多少钱
  • seo网站快排外汇跟单社区网站开发
  • 做市场浏览什么网站汽车设计网站
  • 太仓网站建设企业网站湘潭软件开发
  • 郓城网站建设电话谷歌浏览器wordpress证书不安全
  • 摄像头监控设备企业网站模板上海松江做网站的公司
  • 请简述企业网站建设的流程wordpress docker
  • 北京哪里做网站好网站qq交谈怎么做的
  • 厦门优秀的网站设计网页制作流程一共有几步
  • 网站建设六道怎么做中英文双语网站
  • 带论坛的网站模板下载上海网站建设招标
  • 做视频网站空间要多大广州模板建站软件
  • 手机网站建设的趋势怎样将网站开发说清楚
  • 免费手机个人网站h5编辑平台