empty string什么错误_go语言的interface为什么好用?
Rob Pike 曾说:
如果只能选择一个Go语言的特 性移植到其他语言中,他会选择接口。
看来,go的接口的设计还是一个比较突破的设计。那么他为什么这么说呢?
目前市场上大多数编程语言的接口都是侵入式的,也就是使用接口时要说明,我实现了某某接口。比如java,想要实现一个接口,就需要使用implements关键字然后加上接口名字。这样可想而知耦合度是增加了的。
其实我们要做的就是面相接口编程,但是我们到底怎么做才真正的是做到:依赖于接口而不是实现,优先使用组合而不是继承呢?
大家都知道 Duck Typing,当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。这句话是非常有哲学的,因为这句话你不知道到底是正确还是错误。假如现在有一个鸭子状的玩具摆在这里,对于一个小女孩看见可能就说这是一个鸭子。但是由于我比较喜欢吃烤鸭,当我看到这个玩具时,我只认为这就是一个玩具,不是鸭子,充其量是一个鸭子状的玩具。但是对于小女孩来说,为什么是鸭子呢?因为她看到了玩具的嘴巴扁扁的,样子和鸭子一样,所以她认为这就是鸭子。这就是因为我们关心的点不一样。
图片来源于网络
首先看一下go是如何实现一个接口的,我们使用最经典的一个例子:
package mainimport ( "fmt" "reflect" "strconv")type Stringer interface { String() string}type Binary uint64func (i Binary) String() string { return strconv.FormatUint(i.Get(), 10)}func (i Binary) Get() uint64 { return uint64(i)}func main() { b := Binary(200) s := Stringer(b) fmt.Println(s.String()) fmt.Println("s 的类型:
empty string什么错误_go语言的interface为什么好用?相关推荐
- go http 处理w.write 错误_Go语言中的异常和错误处理简介
女主宣言 异常和错误处理在保证程序的鲁棒性方面起到了至关重要的作用.C++.Java.Python中的异常和错误处理都是比较类似的,可以用try-catch逻辑操作,但是Go中的异常处理却有别于以上三 ...
- call stack是什么错误_Go语言(golang)的错误(error)处理的推荐方案
原文链接:https://www.flysnow.org/2019/01/01/golang-error-handle-suggestion.html 微信公众号:flysnow_org(飞雪无情) ...
- c语言scanf返回值错误,c语言scanf返回值
1. scanf 函数是有返回值的,它的返回值可以分成三种情况 1) 正整数,表示正确输入参数的个数.例如执行 scanf("%d %d", &a, &b); 如果 ...
- NAVICAT MYSQL 建表字段 默认值、EMPTY STRING、空白、NULL 的区别
Navicat mysql 建表字段 默认值.empty string.空白.NULL 的区别 总结在最后,没啥干货 简单测试了4种类型 bigint tinyint varchar char 单引号 ...
- Mysql 数据库默认值选 ‘‘“ 、Null和Empty String的区别
Mysql 数据库默认值选 ''" .Null和Empty String的区别 1:空值('')是不占用空间的 2: MySQL中的NULL其实是占用空间的.官方文档说明: "NU ...
- go 变量大写_go语言如何将大写转小写,c语言字符串小写转大写
go语言如何将大写转小写围棋怎么把大写字母变成小写字母,go语言中大写转换为小写的方法:首先,创建一个go样本文件:然后定义一个字符串类型的变量:然后使用ToLower函数将所有大写的变量字符转换成小 ...
- go语言视频教程_ go语言入门视频教程_go语言实战视频教程
许多人可能知道go语言的优点在哪里,但他们不知道go语言适合在哪里使用.通过学习go语言视频教程,可以清楚的知道go语言主要用于服务器端开发,其定位是用来开发"大型软件".学习go ...
- 控制台报错For input string: ““、empty String
问题介绍:这几天做东西总是遇到两个问题:控制台报错For input string: "".empty String 背景:虽然不耽误正常使用swagger,但是看着贼烦,而且随着 ...
- 解决mysql的utf8编码中生僻字写入时Incorrect string value错误
http://hi.baidu.com/cnkarl/item/e18214e8ba7ce3c6bbf37ddd ------------------------------------------- ...
- go struct 静态函数_Go语言学习笔记(四)结构体struct 接口Interface 反射reflect...
加 Golang学习 QQ群共同学习进步成家立业工作 ^-^ 群号:96933959 结构体struct struct 用来自定义复杂数据结构,可以包含多个字段(属性),可以嵌套: go中的struc ...
最新文章
- java hanoi_Hanoi问题java解法
- Error in x$e : $ operator is invalid for atomic vectors
- python 字符串切割例题_Python字符串及练习题
- django 不用自带的mysql_python笔记二 django自带后台管理系统、模版渲染以及使用mysql数据库...
- POJ 2411 Mondriaan's Dream [经典状态压缩dp]
- Matplotlib绘制动态曲线图,超简单!!
- java怎么设置快速修复键_Java开发环境之------MyEclipse快捷键和排除错误第一选择ctrl+1(***重点***:ctrl+1,快速修复---有点像vs中的快速using...
- Filter(过滤器) 和 interceptor(拦截器)的区别
- Python笔记(十五)_异常处理
- Chrome 渲染流水线演化的未来
- 插件原理[转自CSDN]
- 20个令程序员泪流满面的瞬间
- ubuntu vmplayer安装vmtool
- matlab里删除文件恢复,删除的文件如何恢复?360安全卫士找回误删文件
- Bootstrap文字排版方面css实用类
- java中public static void main(String args[])具体是什么意思?
- syzlang语法编写案例学习 —— Looking for Remote Code Execution bugs in the Linux kernel
- 北京大学C语言学习第4天
- Spring Cloud 微服务学习与实践
- 单招计算机网络考什么,单招考什么内容 单招一般考什么科目
热门文章
- 3.PHP核心技术与最佳实践 --- PHP网络技术及应用(cURL,socket,SMTP,WebService,Cookie,Session,localStorage)
- 156.PHP多进程
- 21. yii 2 library
- 10. Document getElementsByTagName() 方法
- 2. HTML DOM Element 对象
- Python学习之面向对象(一)
- wifi的主动扫描和被动扫描
- 【一步一步】Spring 源码环境搭建
- 从现实抽象出类的步骤
- PHP 后台程序配置config文件,及form表单上传文件