Loading

摘要: 25.1 什么是变长参数 变长参数函数:调用时可以接受零个、一个或多个实际参数的函数。 func Println(a ...interface{}) (n int, err error) 只能有一个“...T”类型形式参数,且该形式参数应该为函数参数列表中的最后一个形式参数。 “...T”类型形式参 阅读全文
posted @ 2024-02-13 16:14 brynchen 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 24.1 方法集合 方法决定接口实现: 如果某个自定义类型T的方法集合是某个接口类型的方法集合的超集,那么就说类型T实现了该接口,并且类型T的变量可以赋值给该接口类型的变量 Go语言规范,对于非接口类型的自定义类型T: 类型T,方法集合由所有receiver为T类型的方法组成 类型*T,方法集合由所 阅读全文
posted @ 2024-02-13 14:08 brynchen 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 和函数相比,Go语言中的方法在声明形式上仅仅多了一个参数,Go称之为receiver参数。receiver参数是方法与类型之间的纽带。 Go方法特点: 方法名的首字母是否大写决定了该方法是不是导出方法。 方法定义要与类型定义放在同一个包内。由此可以推出,不能为原生类型(如int/float64/ma 阅读全文
posted @ 2024-02-13 11:51 brynchen 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 22.1 defer的运行机制 在Go中,只有在函数和方法内部才能使用defer。 defer关键字后面只能接函数或方法,这些函数被成为deferred函数。defer将它们注册到其所在goroutine用于存放deferred函数的栈数据结构中。 在执行defer的函数退出前,按后进先出(LIFO 阅读全文
posted @ 2024-02-13 11:18 brynchen 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 21.1 什么是"一等公民" (1) 正常创建 // $GOROOT/src/fmt/print.go func newPrinter() *pp { p := ppFree.Get().(*pp) p.panicking = false p.erroring = false p.wrapErrs 阅读全文
posted @ 2024-02-13 10:56 brynchen 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 20.1 认识init函数 init函数的特点: 运行时调用,Go程序中不能显式调用 顺序执行,等待一个init函数执行完毕并返回后再执行下一个init函数 在整个Go程序生命周期内仅会被执行一次 先被传递给Go编译器的源文件中的init函数先被执行,同一个源文件中的多个init函数按声明顺序依次执 阅读全文
posted @ 2024-02-13 10:50 brynchen 阅读(4) 评论(0) 推荐(0) 编辑