“我不想吹go怎么先进高级,相反就目前为止我觉得它有点莫名其妙”
Note:没使用过c语言指针的建议直接找教程看,否则可能越看越糊涂。
指针和语法糖
go语言采用了C语言中指针的概念,简单来说指针就是变量的地址,在C语言中通过[*ptr.]或者[ptr->] 的方式来使用,但是在Go语言中把这两种方式都简化成[ptr.]了,与普通变量一样,看过一篇文章说这是go提供的一个语法糖,示例:
func main() {
var ptr = &ConsoleWriter{}// &号相当于new,返回一个ConsoleWriter的指针
//调用Write()方法
ptr.Write("test")// ptr.其实是个语法糖,相当于c里头的 ptr->Write("test")
}
PS: 个人表示对这种“语法糖”不很认同,谁会懒到要省下那个*号或者->符号么?
接口
以日志系统的部分代码为例。
接口定义
// 定义一个接口LogWriter,只有一个Write方法
type LogWriter interface {
Write(interface{})error
}
接口实现
// 新建一个结构体并实现LogWriter接口
//结构体
type ConsoleWriter struct {
attr interface{} // 无特殊意义,随便填的属性,演示用
}
// 接口实现