C#/JAVA 程序员转GO/GOLANG程序员笔记大全(DAY 04)
-------------------- interface 接口
// 定义:
type IHumaner interface {
SayHi() // 接口中只能是方法声明,没有实现,没有数据字段
} // Student ...
type Student struct {
id int
name string
} func (tmp *Student) SayHi() {
fmt.Println("Student[%s, %d] SayHi", tmp.name, tmp.id)
} // Teacher ...
type Teacher struct {
addr string
group string
} func (tmp *Teacher) SayHi() {
fmt.Println("Teacher[%s, %d] SayHi", tmp.addr, tmp.group)
} // MyStr
type MyStr string
func (tmp *MyStr) SayHi() {
fmt.Println("MyStr[%s, %d] SayHi", *tmp)
} func main() {
// 定义接口类型的变量
var i IHumaner // 只是实现了此接口的方法的类型,那么这个类型的变量(接收者类型)就可以给i赋值
s := &Student{"loong", }
i = s
i.SayHi() t := &Teacher{"cls", "ShenZhen"}
i = t
i.SayHi() var str MyStr = "hello loong"
i = &str
i.SayHi() // Print Result
// loong 666 ... cls ... hello loong
}
-------------------- interface 接口 多态的应用
// 多态的应用
func WhoSayHi(i IHumaner){
i.SayHi()
} // 调用多态
s := &Student{"loong", }
t := &Teacher{"cls", "ShenZhen"}
var str MyStr = "hello loong" WhoSayHi(s)
WhoSayHi(t)
WhoSayHi(&str) // 创建一个切片
x := make([]IHumaner, )
x[] = s
x[] = t
x[] = &str for _, i := range x {
i.SayHi()
}
-------------------- interface 空接口 (任务类型)
func main() {
// 空接口是万能类型
type tmp interface{} =
// 字符串
tmp = "abc"
tmp = &v2
// .. 等等数据类型
// ***** 打印参数的内部实现就是采用的空接口
// ftm.Println(args ...interface{})
}
-------------------- 类型断言 (类型查询)
struct Student struct {
id int
name string
}
func main() {
i := make([]interface{}, )
i[] =
i[] = "hello go"
i[] = Student{, "loong"}
// 类型查询
for index, data := range i {
// 第一个返回值,第二个返回判断结果的真假
if value, ok := data.(int); ok == true {
}
// data.(string) data.(Student) 都可以作为判断
}
// 同理,data.(type) 也可以作用于判断类型 return int, string, ...
}
C#/JAVA 程序员转GO/GOLANG程序员笔记大全(DAY 04)的更多相关文章
- C#/JAVA 程序员转GO/GOLANG程序员笔记大全(DAY 05)
----------------------------------------- error 使用 (异常处理) // 语法 (普通错误) import "errors" fun ...
- C#/JAVA 程序员转GO/GOLANG程序员笔记大全(DAY 06)
----------------------------------------- go 并发 // 注解:go 语言天生为程序并发所设计,可以说go的强项就是在cpu并发上的处理. // go 语言 ...
- C#/Java 程序员转GO/golang程序员笔记大全(day 01)
前言: 整理一下学习 Go 语言的笔记,作为一名老程序,学习一名新的开发语言自然不需要像小白那样从 HelloWorld 看起. 简单整理一下 Go 的一些差异处,希望对大家学习 go 有点帮助,不正 ...
- C#/JAVA 程序员转GO/GOLANG程序员笔记大全(DAY 00)
一.安装说明 https://studygolang.com/dl 二.环境变量 // 下载 *.msi 安装文件,部分环境变量默认配置好了. 其他配置如下描述 三.目录及项目层级关系 在系统环境变量 ...
- C#/JAVA 程序员转GO/GOLANG程序员笔记大全(DAY 03)
go语言当中,没有 class 的概念,那么面向对象的编程思想如何展现呢,go语言中对结构体的使用 struct. package main import "fmt" type P ...
- C#/JAVA 程序员转GO/GOLANG程序员笔记大全(DAY 02)
------------------- 指针 go 保留的 c 语言指针的操作,同时增加了自动垃圾回收机制 var a = new(int) *a = // &a 内存地址 --------- ...
- PHP笔记——java程序员看懂PHP程序
PHP笔记——java程序员看懂PHP程序 php是一种服务器端脚本语言,类型松散的语言. <?php ?> xml风格 <script language=”ph ...
- 使用 Java 开发兼容 IPv6 的网络应用程序
根据现有 IPv4 地址的部署速度,剩余的地址将在 10 到 20 年被使用殆尽.因此网络逐渐从 IPv4 向 IPv6 转换是不可避免的,相应的各种网络应用程序都将支持 IPv6.对于 Java,从 ...
- StackOverflow程序员推荐:每个程序员都应读的30本书
“如果能时光倒流,回到过去,作为一个开发人员,你可以告诉自己在职业生涯初期应该读一本,你会选择哪本书呢?我希望这个书单列表内容丰富,可以涵盖很多东西.” 很多程序员响应,他们在推荐时也写下自己的评语. ...
随机推荐
- Singleton: this & instance
public class Singleton{ private static final Singleton instance = new Singleton(); private String na ...
- Angular 笔记系列(一)项目组织与命名规范
其实使用 Angular.js 做项目已经很久了,也遇到过许多问题.其中很多问题的出现都是因为没有按照规范或者最佳实践来做,大部分原因是学的不够细,很多 tips 没 get 到,用到项目中就会出现各 ...
- python的最大递归层数
def foo(n): print(n) n += 1 foo(n) if __name__ == '__main__': foo(1) 打印出998,然后报错 RecursionError: max ...
- 002-jdk10安装
下载地址: 1.百度云下载地址.(当然也可以官网下载,都一样) 地址:https://pan.baidu.com/s/13oZh_5tXb_Xadg9f-y2Idw 密码:a9h8 安装jdk: 2. ...
- ruby中的instance_eval,class_eval,eval
ruby具有在运行时执行以字符串形式保存的代码的功能设施,eval族方法 .包括Kernel#eval,Object#instance_eval,Module#class_eval. Kernel#e ...
- ruby中的私有方法和保护方法
ruby中的私有方法是指方法只能被隐含调用,不能被显示调用.而当没有显示接收者的时候,会把self当成接收者.因此,只能在自身中调用私有方法,这也是私有方法的调用规则. ruby的私有方法机制目的是: ...
- 一个App项目设计开发完整流程
作为一个PHP程序猿想转行APP开发可不是件容易的事情,话说隔行如隔山,这隔着一层语言也是多东西需要学习啊,一直对APP开发很感兴趣,最近请教了几个做移动开发的朋友,看了很多的资料,决定把自己学到的东 ...
- 性能调优之MySQL篇一:MySQL性能计数器
计数器 计数器分析 Threads_connected 表示当前有多少个客户连接该mysql服务器,连接数是否过多,网络是否存在问题,它是动态变化的,当达到最大连接数时,数据库系统就不能提供更多的连接 ...
- SqlHelper简单实现(通过Expression和反射)10.使用方式
以下是整个SqlHelper的Demo: public Result<List<ArticleDTO>> GetIndexArticleList(int count, int ...
- PV、TPS、QPS是怎么计算出来的?
PV=page viewTPS=transactions per secondQPS=queries per secondRPS=requests per second RPS=并发数/平均响应时间 ...