golang-方法和接口
1.方法
方法类似函数 ,多了一个接收者 ,接收者是指针指向结构体(也可以是值) ,方法与结构体绑定 (可以理解为模板定义方法) ,方法位于结构体内部
方法集可以理解就是多个方法
可以组合其他结构体方法 ,直接将其他结构体类型放入属性
2.创建方法
接收者指定好对应的结构体 ,可以直接引用结构体内的所有属性和方法
package main import "fmt" type Ven struct {
Name string
address string
} func (v *Ven) Name_info() string {
return "公司名称" + v.Name
} func (v *Ven) Address_info() string {
return fmt.Sprintf(",公司地址%v", v.address)
} func (v *Ven) Info() string {
return v.Name_info() + v.Address_info()
} func main() {
a1 := Ven{
Name: "亚马逊",
address: "美国",
} fmt.Println(a1.Info())
}
3.使用方法与指针
希望方法修改实例内部 ,方法定义指针接收者
希望方法不修改实例 ,方法定义值接收者
package main import "fmt" type Ven struct {
Name string
address string
remarks string
} func (v *Ven) Name_info() string {
return "公司名称" + v.Name
} func (v *Ven) Edit_remarks(in string) {
v.remarks = in
} func (v Ven) Edit_remarks1(in string) { //值引用无法做用实例
v.remarks = in
} func main() {
a1 := Ven{
Name: "亚马逊",
address: "美国",
} fmt.Println("备注",a1.remarks)
a1.Edit_remarks("亚马逊商城退出中国")
fmt.Println("备注",a1.remarks)
a1.Edit_remarks1("亚马逊进入中国") //值引用无法做用到a1实例
fmt.Println("备注",a1.remarks) }
4.接口
接口指定了方法集中所有方法的规范 ,但不实现
接口指定方法的函数签名部分
接口可以实现代码重用和完全替换实现
package main import "fmt" type DB_inter interface {
Read() string
Write() string
} type RW struct {
} func (r *RW) Read() string {
return "读取数据"
} func (r *RW) Write() string {
return "写入数据"
} type Mysql struct {
Name string
RW //继承方法 ,实现了接口
} type Postgre struct {
Name string
RW //继承方法 ,实现了接口
} //接口函数
func R(obj DB_inter) string {
return obj.Read()
} func W(obj DB_inter) string {
return obj.Write()
} func main() {
mysql := Mysql{Name: "mysql数据库"}
pg := Postgre{Name: "pg数据库"} fmt.Println(R(&mysql)) //此处必须使用指针
fmt.Println(R(&pg)) //此处必须使用指针 }
golang-方法和接口的更多相关文章
- golang方法和接口
一. go方法 go方法:在函数的func和函数名间增加一个特殊的接收器类型,接收器可以是结构体类型或非结构体类型.接收器可以在方法内部访问.创建一个接收器类型为Type的methodName方法. ...
- GoLang之方法与接口
GoLang之方法与接口 Go语言没有沿袭传统面向对象编程中的诸多概念,比如继承.虚函数.构造函数和析构函数.隐藏的this指针等. 方法 Go 语言中同时有函数和方法.方法就是一个包含了接受者的函数 ...
- Golang 中的 面向对象: 方法, 类, 方法继承, 接口, 多态的简单描述与实现
前言: Golang 相似与C语言, 基础语法与C基本一致,除了广受争议的 左花括号 必须与代码同行的问题, 别的基本差不多; 学会了C, 基本上万变不离其宗, 现在的高级语言身上都能看到C的影子; ...
- Go 语言中的方法,接口和嵌入类型
https://studygolang.com/articles/1113 概述 在 Go 语言中,如果一个结构体和一个嵌入字段同时实现了相同的接口会发生什么呢?我们猜一下,可能有两个问题: 编译器会 ...
- Go 语言入门(二)方法和接口
写在前面 在学习 Go 语言之前,我自己是有一定的 Java 和 C++ 基础的,这篇文章主要是基于A tour of Go编写的,主要是希望记录一下自己的学习历程,加深自己的理解 Go 语言入门(二 ...
- Go语言_方法和接口
方法和接口 本节课包含了方法和接口,可以用这种构造来定义对象及其行为. Go 作者组编写,Go-zh 小组翻译. https://tour.go-zh.org/methods/1 方法 Go 没有类. ...
- 带你学够浪:Go语言基础系列 - 10分钟学方法和接口
文章每周持续更新,原创不易,「三连」让更多人看到是对我最大的肯定.可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) 对于一般的语言使用者来说 ,20% 的语言特性就能够满 ...
- C#属性-索引器-里氏替换-多态-虚方法-抽象-接口-泛型-
1.属性 //属性的2种写法 public class person { private string _name; public string Name { get { return _name; ...
- jbuilder的set!方法重构接口
https://github.com/rails/jbuilder 的set!方法重构接口, 因为grape没法使用 jBuilder 的缓存,所以直接用 Rails 写 API (1)多个图片 i ...
- 使用 highchart 绘制柱状图的通用方法与接口
本文给出使用 highchart 绘制柱状图的通用方法与接口, 只要指定相应的数据结构和配置, 就可以直接拿来使用. 一. 数据结构与基本接口 一般绘制图形, 会涉及到较复杂的数据结构, 比如使 ...
随机推荐
- 使用docker运行dotnetcore站点
使用docker运行netcore站点 1.新建一.netcore测试站点,dotnet publish 发布到publish目录下 2.编写Dockerfile文件 3.打包上传到centos服务器 ...
- SAP中的数据库表索引
数据库表中的索引可以加快查询的速度.索引是数据库表字段的有序副本.附加的字段包含指向真实数据库表行的指针.排序可以使访问表行的速度变快,例如,可以使用二分搜索.数据库表至少有一个主索引,由它的key字 ...
- bayaim——听课笔记_01.Docker基础应用 10课.txt
===========2019年8月5日18:39:06====================10.20.100.21rootbayaim ==========01-Docker介绍======== ...
- MPV源码探究:背景及准备工作
背景及准备工作 一点历史 古有魏蜀吴三分天下,今有 Mplayer.MPC.VLC 三分天下.这个世界观太庞大,忍不住先讲一点多媒体播放器的历史.实际上目前市面上的开源播放器主要基于三种技术栈: Mp ...
- Java之数据库表字段有关键字报错java.sql.SQLSyntaxErrorException
前两天在开发中遇到一个坑,本来我在快乐的做着增删改查,然后悲剧发生了,在查询数据库的过程中,报了java.sql.SQLSyntaxErrorException: 经过排查,是因为数据库表字段中存在关 ...
- IT兄弟连 HTML5教程 W3C盒子模型
日常生活中所见的盒子也就是能装东西的一种箱子,如果家里的东西很多,那么就需要按类别装到不同的箱子中.网页中的内容表现也是一样的,如果页面内容比较多,又想让页面更整洁.更美观.有很好的用户体验,则也需要 ...
- Java DAO 模式
转载自https://www.runoob.com/note/27029 DAO 模式 DAO (DataAccessobjects 数据存取对象)是指位于业务逻辑和持久化数据之间实现对持久化数据的访 ...
- C# 使用 csc.exe 实现命令行生成
概述 CSC是什么呢?CSC就是 C-Sharp Compiler (中文就是C#编译器),作用是把我们的 cs 源文件变异成dll 或者是exe , 一般安装完VS 后,就会有这个文件: 这里 ...
- Hibernate 框架入门
接着上一篇的 Hibernate 框架的了解,我们就继续学习 Hibernate 框架.这次就进入 Hibernate 框架的入门学习. 首先在学习 Hibernate 框架之前,我们要准备好我们需要 ...
- Spring Bean Expression Language(EL)
1, Add dependency. <dependency> <groupId>org.springframework</groupId> <artifac ...