今天学习了接口等东西。

package mainimport ("fmt""math"
)type I interface {M()
}type T struct {S string
}func (t *T)M(){fmt.Println(t.S)
}type F float64func (t F)M(){fmt.Println(t)
}func describe(i I){fmt.Printf("(%v,%T)\n",i,i)
}func main(){var i Ii = &T{"Hello"}describe(i)i.M()i = F(math.Pi)describe(i)i.M()
}

接下来是今天的学习代码:

package mainimport ("fmt"
)type I interface {M()
}type T struct {S string
}func (t *T)M(){if t==nil{fmt.Println("<nil>")return}fmt.Println(t.S)
}func main(){var i Ivar t *Ti = tdescribe(i)i.M()i = &T{"hello"}describe(i)i.M()}func describe(i I)  {fmt.Printf("(%v,%T)\n",i,i)
}
package mainimport "fmt"type I interface {M()
}func main(){var i Idescribe(i)i.M() //当未具体实现接口的方法时候,会自动报错}func describe(i I)  {fmt.Printf("(%v,%T)\n",i,i)
}
package main
import ("fmt""io""strings"
)func main() {r := strings.NewReader("Hello, Reader!")b := make([]byte, 8)for {n, err := r.Read(b)fmt.Printf("n = %v err = %v b = %v\n", n, err, b)fmt.Printf("b[:n] = %q\n", b[:n])if err == io.EOF {break}}
}
//接口断言
//即判断数据类型
package mainimport ("fmt"
)func main(){var i interface{} = "hello"s:=i.(string)fmt.Println(s)s,ok :=i.(string)fmt.Println(s,ok)f,ok := i.(float64)fmt.Println(f,ok)
}
package mainimport "fmt"func do(i interface{}) {switch v := i.(type) {case int:fmt.Printf("Twice %v is %v\n", v, v*2)case string:fmt.Printf("%q is %v bytes long\n", v, len(v))default:fmt.Printf("I don't know about type %T!\n", v)}
}func main() {do(21)do("hello")do(true)
}
package mainimport "fmt"//声明接口
type I interface {M()
}//声明结构体
type T struct {S string
}//类型T实现了M方法,但无需显示调用
func (t T)M(){fmt.Println(t.S)
}func main() {var i I = T{"hello"}i.M()
}

就是现在基础教程还剩最后一个并发还没学,在我看来,这可能是Go语言的灵魂了,等有时间再好好总结一下Go关于接口的一些重要知识点!接下来要取准备搞Python的项目了,希望今天能把这一块拿下来,加油加油加油!!!

Go语言学习Day06相关推荐

  1. C++语言学习(十二)——C++语言常见函数调用约定

    C++语言学习(十二)--C++语言常见函数调用约定 一.C++语言函数调用约定简介 C /C++开发中,程序编译没有问题,但链接的时候报告函数不存在,或程序编译和链接都没有错误,但只要调用库中的函数 ...

  2. 微软提出CLIPBERT:通过稀疏采样的视频语言学习

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 论文是学术研究的精华和未来发展的明灯.小白决心每天为大家带来经典或 ...

  3. c语言错误的等式,C语言学习中几个常见典型错误分析.docx

    C语言学习中几个常见典型错误分析 打开文本图片集 摘要:C语言是一门优秀,应用广泛的结构化程序设计语言,是中职计算机.机电和电子技术等专业一门理论和实践相结合的课程,教学实践中,学生常觉得c语言难学, ...

  4. 二级C语言学习宝典下载,二级C语言学习宝典

    二级C语言学习宝典app是一款专注于全国二级计算机等级C语言学习所开发的应用软件,它能够给你带来全新的功能板块,让你轻松掌握超多优质的考试训练,享受到手机端做题刷题的畅快体验,让你轻松备考,而且在该软 ...

  5. php7做了哪些优化,PHP语言学习之PHP7做了哪些优化

    本文主要向大家介绍了PHP语言学习之PHP7做了哪些优化,通过具体的内容向大家展示,希望对大家学习php语言有所帮助. 一  zval使用栈内存 在Zend引擎和扩展中,经常要创建一个PHP的变量,底 ...

  6. C语言学习趣事_之_大数运算_加法

    C语言学习趣事_大数运算_之加法 1.引子    在C语言中,因为预定义的自然数类型的大小是有上下限度的,这就决定了在进行数的运算的时候,必然受到限制,同时因为C语言是最接近汇编的一种程序设计语言,并 ...

  7. 攻破c语言笔试与机试难点,如何攻破C语言学习、笔试与机试的难点.doc

    如何攻破C语言学习.笔试与机试的难点 第一节??C语言编程中的几个基本概念1.1? ?? ?#include< >与#include" "? 1.? ?#include ...

  8. c语言 浮点型数据怎么存放,C语言学习之浮点型数据存储

    C语言学习之浮点型数据 浮点数 浮点型数据分为单精度浮点型(float)和双精度浮点型(double). 单精度(float) 单精度浮点值 取值范围:1.2E-38 到 3.4E+38 精度:6 位 ...

  9. r语言electricity数据集_R语言学习10-查看数据

    当我们处理一个新的数据集的时候,第一件事就是要对数据做一个了解.数据的格式是什么?数据的维度是多少?变量名是什么? 变量如何存储? 是否缺少数据? 数据中是否有任何缺陷? 本次课将学习如何使用R的内置 ...

最新文章

  1. HDU 1273 漫步森林
  2. a为数组名。sizeof(a)和sizeof(a)有什么区别?结果是?
  3. 并不对劲的bzoj2038:p1494:[国家集训队]小Z的袜子
  4. Linux DISPLAY作用
  5. MySQL修改配置 区分大小写
  6. TCP/IP详解 笔记九
  7. Linux操作系统下三种配置环境变量的方法
  8. 社交网络中各类产品形态的分析
  9. Raki的读paper小记:SUBSPACE REGULARIZERS FOR FEW-SHOT CLASS INCREMENTAL LEARNING
  10. marlab中主成分得分怎么求_雅漾恒润保湿精华乳,做完配方成分解读,我表示遗憾,决定守住我的花呗...
  11. 看完老板就给加薪了!javase项目快速入门
  12. wps下一步快捷键_WPS快捷键大全
  13. 学习Java过程中创建动态数组的两种方法比较
  14. 修改TIM文件存储路径
  15. 目标检测pytorch报错:RuntimeError: CUDA error: device-side assert triggered
  16. 275. H指数 II
  17. 我最喜欢的音乐系列之李连杰电影插曲
  18. Win10怎么隐藏任务栏时间 如何看不到右下角时间
  19. 从小样本学习出发,奔向星辰大海
  20. 梅森数 (10 分)

热门文章

  1. 企业最喜欢招聘什么样的Java程序员?谈谈我的看法
  2. 成功修复2G金士顿U盘
  3. 【mysql执行计划 const eq_ref ref range index all】
  4. NumberUtils的 isParsable(String)和isCreatable(String)方法
  5. leetcode题解179-最大数
  6. 剑指Offer09-用两个栈实现队列
  7. noip2013——提高组——花匠(flower)
  8. 我的js函数库(持续更新)
  9. mysql主从-读写分离
  10. 百度地图——判断用户是否在配送范围内解决方案