课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
编程规范是我们在学习软件开发技术的时候需要重点关注的一个编程知识,下面我们就通过案例分析来了解一下,go语言编程规范都有哪些要求。
1、指向interface的指针
您几乎不需要指向接口类型的指针。您应该将接口作为值进行传递,在这样的传递过程中,实质上传递的底层数据仍然可以是指针。
接口实质上在底层用两个字段表示:
一个指向某些特定类型信息的指针。您可以将其视为"type"。
数据指针。如果存储的数据是指针,则直接存储。如果存储的数据是一个值,则存储指向该值的指针。
如果希望接口方法修改基础数据,则必须使用指针传递(将对象指针赋值给接口变量)。
2、Interface合理性验证
在编译时验证接口的符合性。这包括:
将实现特定接口的导出类型作为接口API的一部分进行检查
实现同一接口的(导出和非导出)类型属于实现类型的集合
任何违反接口合理性检查的场景,都会终止编译,并通知给用户
补充:上面3条是编译器对接口的检查机制,
大体意思是错误使用接口会在编译期报错.
所以可以利用这个机制让部分问题在编译期暴露.
3、接收器(receiver)与接口
使用值接收器的方法既可以通过值调用,也可以通过指针调用。
带指针接收器的方法只能通过指针或addressablevalues调用.
补充:
一个类型可以有值接收器方法集和指针接收器方法集
值接收器方法集是指针接收器方法集的子集,反之不是
规则
值对象只可以使用值接收器方法集
指针对象可以使用值接收器方法集+指针接收器方法集
接口的匹配(或者叫实现)
类型实现了接口的所有方法,叫匹配
具体的讲,要么是类型的值方法集匹配接口,要么是指针方法集匹配接口
具体的匹配分两种:
值方法集和接口匹配
给接口变量赋值的不管是值还是指针对象,都ok,因为都包含值方法集
指针方法集和接口匹配
只能将指针对象赋值给接口变量,因为只有指针方法集和接口匹配
如果将值对象赋值给接口变量,会在编译期报错(会触发接口合理性检查机制)
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。