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本书
“如果能时光倒流,回到过去,作为一个开发人员,你可以告诉自己在职业生涯初期应该读一本,你会选择哪本书呢?我希望这个书单列表内容丰富,可以涵盖很多东西.” 很多程序员响应,他们在推荐时也写下自己的评语. ...
随机推荐
- 工作笔记——dom属性巧用
1.获取验证码 dom: <span class="btn btn-primary">获取验证码</span> js: /** *@Author Mona ...
- wget 用法
wget -r -p -np -k http://xxx.com/xxx
- 10 Linux Commands Every Developer Should Know
转载:http://azer.bike/journal/10-linux-commands-every-developer-should-know/ As a software engineer, l ...
- Codeforces Round #412 (rated, Div. 2, base on VK Cup 2017 Round 3) D - Dynamic Problem Scoring
地址:http://codeforces.com/contest/807/problem/D 题目: D. Dynamic Problem Scoring time limit per test 2 ...
- Redhat 7.4更新为Centos7的yum并安装docker-ce
以下命令请在root下执行 #删除原有的yum rpm -qa|grep yum|xargs rpm -e --nodeps #install centos yum #wget http://mirr ...
- Eclipase .自动提示
打开eclipse→Windows→Preferences→Java→Editor→Content Assist 修改Auto Activation triggers for java的值为 .abc ...
- 如何高效的遍历HashMap 以及对key 进行排序
Map<Integer ,Object> map = new HashMap<Integer,Object>(); for(int i = 0; i<=100;i++){ ...
- HDU2189 来生一起走
好久没发博客了,最近遇到以下奇葩错误,不明觉厉,忍不住发一篇 /*母函数,因为要求的是素数,那么先打一个素数表,所有的因子都是素数构成 但是遇到一个奇葩事,当num初值取1,结果就出不来,运行了好久 ...
- Android中的颜色值
1.在android中经常看到设置的颜色为八位的十六进制的颜色值,例如: 1 2 3 public static final class color { public static final ...
- 《Java程序设计》实验1实验报告
20145318 <Java程序设计>实验1实验报告 实验题目 通过对500个数据进行操作,实现快速排序.选择排序.直接插入排序算法时间复杂度的比较:并在排序数据中快速查找某一数据,给出查 ...