Java 和 Python 有哪些区别

1 跟着google走,放心
为什么是python,而不是ruby,php,groovy,scala等等 ? 首先
, groovy,scala都是为java 平台设计的动态语言,用这两种玩意儿能做的事情,java 也能做,只不过方式不一样而已,所以没必要在它们上浪费时间了.其次
,据传 google内部使用的语言是 c++,java, python,javascrip. 分析一下:java 作为当之无愧的no.1 肯定是不用说了. 有些项目象
是必须用c++开发的,所以c++也在情理之中;开发web 应用,javascript 是绕不开的,虽然google自己搞了个gwt,但最终的功能实现,是透过jsni使用javascript来实现的;只有python, 为什么google 在那么多的
中偏偏选择了它呢. 具体分析起来象什么性能啊,语言特点啊什么的肯定得整出很长一篇,太废口水,google在做出选择之前肯定是做过审慎的评估的,所以我们只要跟着它走就行了.
2 python 有多种运行时环境,掌握了python可以在多种环境下发挥你的编程技能
python 有多种实现,即多种运行时环境,
(多种操作系统上均可以使用),
(java 虚拟机上使用), ironpython(.net 环境下使用),
(symbian s60系统下使用),掌握了python后,在多种操作系统,java vm, .net , symbian s60上都可以发挥你的编程技能.另外,很多应用程序都选择了python作为脚本编程语言,例如
等,掌握python后,可以用程序来操控它们.
3 在 google app engine
上开发应用
google app engine 提供了足够的资源来让你免费托管web 应用程序,只有当你的应用成功,使用资源数量增加之后,才需要按照实际的资源使用量付费; 在gae 上的应用,使用google 久经考验的基础架构,不需要你为硬件的维护,数据库的扩展,等等问题伤神, 只需把精力集中在你的核心价值--应用逻辑的开发上面,这些对于刚起步的小公司来说,还是有吸引力的.随着平台的完善(
).相信会对更多的公司产生吸引力.
但对于java 程序员来说不幸的是,gae目前只支持 python(再一次证明了在google心中,python 相对于ruby,php,等等这些语言,具有特殊的地位). 官方也没明确将来是否支持 java,什么时候支持,所以为了使用gae,就只有死磕python了.
欢迎同学们补充更多的理由,也希望听到反对的呼声..呵呵
就是学起来觉得比较怪异,主要是不太入门,资料比较少,最郁闷的就是调试了,感觉即使用print,碰到的很多事情还是有点怪异,搞不定。要注意和java 的区别,python不是纯的面向对象语言. 还有python的缩进是有特殊意义的.
浏览: 90916 次
来自: 北京
ava.rmi.ConnectException: Conne ...
但是对Server端编程,我觉得 node.js只会成为一匹黑 ...
不错,关-注中,服务端标准出来以后,Javascript将一统 ...
container 写道人家本来就没有想搞你所谓的企业应用。为 ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'你们做大数据的开发,是python语言,还是java?-大数据-about云开发
后使用快捷导航没有帐号?
只需一步,快速开始
扫一扫,访问微社区
查看: 31163|回复: 3
你们做大数据的开发,是python语言,还是java?
主题帖子积分
你们做大数据的开发,是python语言,还是java?
有的好像不太推荐java
欢迎加入about云群 、 ,云计算爱好者群,关注
主题帖子积分
Scala是用来开发spark的,如果hadoop的话,就是Java了。python是基本用来做openstack的。
openstack可以看这个:
openstack开发,Python系列最全文档书籍下载
如果想学习Scala,可以看看这个。
spark的编程语言是Scala30文档分享
欢迎加入about云群 、 ,云计算爱好者群,关注
主题帖子积分
高级会员, 积分 1273, 距离下一级还需 3727 积分
高级会员, 积分 1273, 距离下一级还需 3727 积分
版主说的精彩
主题帖子积分
新手上路, 积分 9, 距离下一级还需 41 积分
新手上路, 积分 9, 距离下一级还需 41 积分
一般是java或者scala是必须,python是加分项吧我认为,python写脚本很快很方便,但是hadoop生态基本都是java,spark是scala,在spark开发中,scala占75%,java占15%,而在hadoop开发中,大部分是java吧
经常参与各类话题的讨论,发帖内容较有主见
经常帮助其他会员答疑
活跃且尽责职守的版主
站长推荐 /4
云计算hadoop视频大全(新增 yarn、flume|storm、hadoop一套视频
等待验证会员请验证邮箱
新手获取积分方法
技术类问答,解决学习openstack,hadoop生态系统中遇到的问题
Powered bypython,java,go语言之间的区别!
- Go语言中文网 - Golang中文社区
<meta name="author" content="polaris ">
python,java,go语言之间的区别!
rubbishcan
· 3795 次点击 ·
开始浏览 & &
除去Java Python Go这三种语言底层以及语法的不同,这里以个人的理解只说说其面向对象方面的思想。 一个简单的示例:
描述人,李雷,韩梅梅,他俩都是好学生。
将用 javapythongo 这三种语言分别简单的描述。
人,是抽象的概念,可以洗衣做饭的灵长目物种,没法特指一样具体的东西,但它也有一些如性别、撒尿这类的属性和功能。
* 抽象出来的人
abstract class Human {
protected S
protected S
public void setSex(String sex) {
this.sex =
public String getSex() {
return this.
public void setName(String name) {
this.name =
public String getName() {
return this.
abstract void doPee(); // 抽象的方法
这里使用抽象类,是因为名字都是父母起的,但撒尿的方法男女不同。接下来是具象人这个抽象的概念了。这里就固话性别属性并且具体定义撒尿的方式。
/** * 具象的男性 */ class Male extends Human { public Male() { this.sex = &#34;男&#34;; }
* 实现的方法
public void doPee() {
System.out.println(this.name + &#34; &#34; + this.sex + &#34;站着撒尿.&#34;);
* 具象的女性
class Female extends Human {
public Female() {
this.sex = &#34;女&#34;;
* 实现的方法
public void doPee() {
System.out.println(this.name + &#34; &#34; + this.sex + &#34;蹲着撒尿.&#34;);
现在有男人和女人了,然后李磊和韩梅梅就要来折磨我们了
Male lilei = new Male();
lilei.setName(&#34;李磊&#34;);
System.out.println(lilei.getName() + &#34; &#34; + lilei.getSex() + &#34; &#34; + &#34;出场&#34;);
Female hanmeimei = new Female();
hanmeimei.setName(&#34;韩梅梅&#34;);
System.out.println(hanmeimei.getName() + &#34; &#34; + hanmeimei.getSex() + &#34; &#34; + &#34;出场&#34;);
lilei.doPee();
hanmeimei.doPee();
_________________________________________________
output: 李磊 男 出场
output: 韩梅梅 女 出场
output: 李磊 男站着撒尿.
output: 韩梅梅 女蹲着撒尿.
李磊和韩梅梅都是好学生,我们这里定义学习的接口,这里的接口就是,大家必须得死学傻学,怎么学看你自己。
* 学习接口
interface Study {
public abstract void learningEnglish();
上面是教育部规定的,李磊韩梅梅作为学生必须得学,男人女人都得经历的。来实现学习接口。
class Male extends Human implements Study {
* 实现的接口
public void learningEnglish() {
System.out.println(this.name + &#34;: How are you?&#34;);
* 具象的女性
class Female extends Human implements Study {
* 实现的接口
public void learningEnglish() {
System.out.println(this.name + &#34;: I&#39;m fine, thank you!&#34;);
lilei.doPee();
hanmeimei.doPee();
lilei.learningEnglish();
hanmeimei.learningEnglish();
_________________________________________________
output: 李磊: How are you?
output: 韩梅梅: I&#39;m fine, thank you!
java的思想大致就是这么样。很严谨,就像一个老学究,1就是1,2就是2。
这是所有的java代码
public class Main {
public static void main(String[] args) {
Male lilei = new Male();
lilei.setName(&#34;李磊&#34;);
System.out.println(lilei.getName() + &#34; &#34; + lilei.getSex() + &#34; &#34; + &#34;出场&#34;);
Female hanmeimei = new Female();
hanmeimei.setName(&#34;韩梅梅&#34;);
System.out.println(hanmeimei.getName() + &#34; &#34; + hanmeimei.getSex() + &#34; &#34; + &#34;出场&#34;);
lilei.doPee();
hanmeimei.doPee();
lilei.learningEnglish();
hanmeimei.learningEnglish();
* 抽象出来的人
abstract class Human {
protected S
protected S
public void setSex(String sex) {
this.sex =
public String getSex() {
return this.
public void setName(String name) {
this.name =
public String getName() {
return this.
abstract void doPee(); // 抽象的方法
* 学习接口
interface Study {
public abstract void learningEnglish();
* 具象的男性
class Male extends Human implements Study {
public Male() {
this.sex = &#34;男&#34;;
* 实现的方法
public void doPee() {
System.out.println(this.name + &#34; &#34; + this.sex + &#34;站着撒尿.&#34;);
* 实现的接口
public void learningEnglish() {
System.out.println(this.name + &#34;: How are you?&#34;);
* 具象的女性
class Female extends Human implements Study {
public Female() {
this.sex = &#34;女&#34;;
* 实现的方法
public void doPee() {
System.out.println(this.name + &#34; &#34; + this.sex + &#34;蹲着撒尿.&#34;);
* 实现的接口
public void learningEnglish() {
System.out.println(this.name + &#34;: I&#39;m fine, thank you!&#34;);
Python 思想
python无以言状的灵活,你就是上帝!
这里我们只要创建一个根类,其他的东西,随时随地,想加就加。
class Human:
&#34;&#34;&#34;
&#34;&#34;&#34;
def __init__(self):
self.__name = &#34;&#34;
self.__sex = &#34;&#34;
def setName(self, name):
self.__name = name
def getName(self):
return self.__name
def setSex(self, sex):
self.__sex = sex
def getSex(self):
return self.__sex
name = property(getName, setName) # 就像java中的POJO setter以及getter
sex = property(getSex, setSex) # 就像java中的POJO setter以及getter
下面就边执行边丰满它
lilei = Human()
lilei.sex = &#34;男&#34;
lilei.name = &#34;李磊&#34;
print &#34;%s %s 出场&#34; % (lilei.name, lilei.sex)
hanmeimei = Human()
hanmeimei.sex = &#34;女&#34;
hanmeimei.name = &#34;韩梅梅&#34;
print &#34;%s %s 出场&#34; % (hanmeimei.name, hanmeimei.sex)
# Pee的方法
def doPee(self, how):
print &#34;%s %s %s撒尿&#34; % (self.name, self.sex, how)
Human.doPee = doPee #动态绑定方法
lilei.doPee(&#34;站着&#34;)
hanmeimei.doPee(&#34;蹲着&#34;)
# 学习的方法
def doLearning(self, learn):
print &#34;%s: %s&#34; % (self.name, learn)
Human.doLearning = doLearning #动态绑定方法
lilei.doLearning(&#34;How are you?&#34;)
lilei.doLearning(&#34;I&#39;m fine, thank you!&#34;)
_________________________________________________
output: 李磊 男 出场
output: 李磊韩梅梅 女 出场
output: 李磊 男 站着撒尿
output: 韩梅梅 女 蹲着撒尿
output: 李磊: How are you?
output: 李磊: I&#39;m fine, thank you!
python中一切对象都是鸭子类型,何谓鸭子类型?只要会&#34;嘎嘎&#34;叫的东西都是鸭子。应用到上面场景中,只要具有学习和撒尿方法的对象都可以看作人了。从另一方面说,我对于鸭子只关注它是否能够&#34;嘎嘎&#34;叫,如果能,不管是什么东西,那么它就是一只鸭子; 对于人,只关注他们是否能撒尿与学习,既能撒尿又能学习,他凭什么就不是人?
python和java就好像阴阳之替的东方玄学之余西方哲学。
这是所有的python代码
#!/usr/bin/env python
# -*- coding: utf-8 -*-
class Human:
&#34;&#34;&#34;
&#34;&#34;&#34;
def __init__(self):
self.__name = &#34;&#34;
self.__sex = &#34;&#34;
def setName(self, name):
self.__name = name
def getName(self):
return self.__name
def setSex(self, sex):
self.__sex = sex
def getSex(self):
return self.__sex
name = property(getName, setName) # 就像java中的POJO
sex = property(getSex, setSex) # 就像java中的POJO
if __name__ == &#39;__main__&#39;:
lilei = Human()
lilei.sex = &#34;男&#34;
lilei.name = &#34;李磊&#34;
print &#34;%s %s 出场&#34; % (lilei.name, lilei.sex)
hanmeimei = Human()
hanmeimei.sex = &#34;女&#34;
hanmeimei.name = &#34;韩梅梅&#34;
print &#34;%s %s 出场&#34; % (hanmeimei.name, hanmeimei.sex)
# Pee的方法
def doPee(self, how):
print &#34;%s %s %s撒尿&#34; % (self.name, self.sex, how)
Human.doPee = doPee #动态绑定方法
lilei.doPee(&#34;站着&#34;)
hanmeimei.doPee(&#34;蹲着&#34;)
# 学习的方法
def doLearning(self, learn):
print &#34;%s: %s&#34; % (self.name, learn)
Human.doLearning = doLearning #动态绑定方法
lilei.doLearning(&#34;How are you?&#34;)
lilei.doLearning(&#34;I&#39;m fine, thank you!&#34;)
面向对象之于Go,没有继承这么一说,更像是C与Python的结合体,并把鸭子类型发扬到极致。
接口(interface)就好比是一只&#34;鸭子&#34;,而interface结构体内包裹的方法就是这只&#34;鸭子&#34;所具有的功能,Go中,接口可以描述为: 具有这些功能的家伙就是这只&#34;鸭子&#34;
方法(func)被定义在结构(类/struct)之外,被绑定于这个结构之上,可以描述为: 这是它的功能,当一个struct中的一些方法都包含在某个interface中时,我们就说: 啊哈,这就是那只&#34;鸭子&#34;,哪怕它多长了几条腿(func),它也是啊
关于继承,没有,go中虽然内嵌很像继承但不是。继承是一脉相传,而go的内嵌表达出你中有我我中有你的情怀,需要用到某个struct的功能了,那么就对它说 你就是我的一部分
struct、interface、func 这些几乎就是Go面向对象的全部了,如此简洁。
package main
&#34;fmt&#34;
// 接口 学生
type Student interface {
learningEnglish(string)
type Human struct {
Name string
// 学习英语方法,绑定于Human
func (student Human) learningEnglish(learning string) {
fmt.Printf(&#34;%s: %s\n&#34;, student.Name, learning)
// 结构 男人
// go没有继承这个概念,这里是嵌入
type Male struct {
Human &#34;嵌入字段&#34;
type Female Male
// 方法, 绑定到了Human结构
func (this Human) Pee(how string) {
fmt.Printf(&#34;%s %s %s撒尿\n&#34;, this.Name, this.Sex, how)
func doLearning(learning Student, learing string) {
learning.learningEnglish(learing)
func doPee(human interface {}) {
switch sex := human.(type){
case Male:
sex.Pee(&#34;站着&#34;)
case Female:
sex.Pee(&#34;蹲着&#34;)
func main() {
lilei := Male{}
lilei.Name = &#34;李雷&#34;
lilei.Sex = &#34;男&#34;
fmt.Printf(&#34;%s %s 出场\n&#34;, lilei.Name, lilei.Sex)
hanmeimei := Female{}
hanmeimei.Name = &#34;韩梅梅&#34;
hanmeimei.Sex = &#34;女&#34;
fmt.Printf(&#34;%s %s 出场\n&#34;, hanmeimei.Name, hanmeimei.Sex)
doPee(lilei)
doPee(hanmeimei)
doLearning(lilei, &#34;How are you?&#34;)
doLearning(hanmeimei, &#34;I&#39;m fine, thank you!&#34;)
3795 次点击 &
请尽量让自己的回复能够对别人有帮助
支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
支持 @ 本站用户;支持表情(输入 : 提示),见
图片支持拖拽、截图粘贴等方式上传
记住登录状态
除去Java Python Go这三种语言底层以及语法的不同,这里以个人的理解只说说其面向对象方面的思想。 一个简单的示例:
描述人,李雷,韩梅梅,他俩都是好学生。
将用 javapythongo 这三种语言分别简单的描述。
人,是抽象的概念,可以洗衣做饭的灵长目物种,没法特指一样具体的东西,但它也有一些如性别、撒尿这类的属性和功能。
* 抽象出来的人
abstract class Human {
protected S
protected S
public void setSex(String sex) {
this.sex =
public String getSex() {
return this.
public void setName(String name) {
this.name =
public String getName() {
return this.
abstract void doPee(); // 抽象的方法
这里使用抽象类,是因为名字都是父母起的,但撒尿的方法男女不同。接下来是具象人这个抽象的概念了。这里就固话性别属性并且具体定义撒尿的方式。
/** * 具象的男性 */ class Male extends Human { public Male() { this.sex = &#34;男&#34;; }
* 实现的方法
public void doPee() {
System.out.println(this.name + &#34; &#34; + this.sex + &#34;站着撒尿.&#34;);
* 具象的女性
class Female extends Human {
public Female() {
this.sex = &#34;女&#34;;
* 实现的方法
public void doPee() {
System.out.println(this.name + &#34; &#34; + this.sex + &#34;蹲着撒尿.&#34;);
现在有男人和女人了,然后李磊和韩梅梅就要来折磨我们了
Male lilei = new Male();
lilei.setName(&#34;李磊&#34;);
System.out.println(lilei.getName() + &#34; &#34; + lilei.getSex() + &#34; &#34; + &#34;出场&#34;);
Female hanmeimei = new Female();
hanmeimei.setName(&#34;韩梅梅&#34;);
System.out.println(hanmeimei.getName() + &#34; &#34; + hanmeimei.getSex() + &#34; &#34; + &#34;出场&#34;);
lilei.doPee();
hanmeimei.doPee();
_________________________________________________
output: 李磊 男 出场
output: 韩梅梅 女 出场
output: 李磊 男站着撒尿.
output: 韩梅梅 女蹲着撒尿.
李磊和韩梅梅都是好学生,我们这里定义学习的接口,这里的接口就是,大家必须得死学傻学,怎么学看你自己。
* 学习接口
interface Study {
public abstract void learningEnglish();
上面是教育部规定的,李磊韩梅梅作为学生必须得学,男人女人都得经历的。来实现学习接口。
class Male extends Human implements Study {
* 实现的接口
public void learningEnglish() {
System.out.println(this.name + &#34;: How are you?&#34;);
* 具象的女性
class Female extends Human implements Study {
* 实现的接口
public void learningEnglish() {
System.out.println(this.name + &#34;: I&#39;m fine, thank you!&#34;);
lilei.doPee();
hanmeimei.doPee();
lilei.learningEnglish();
hanmeimei.learningEnglish();
_________________________________________________
output: 李磊: How are you?
output: 韩梅梅: I&#39;m fine, thank you!
java的思想大致就是这么样。很严谨,就像一个老学究,1就是1,2就是2。
这是所有的java代码
public class Main {
public static void main(String[] args) {
Male lilei = new Male();
lilei.setName(&#34;李磊&#34;);
System.out.println(lilei.getName() + &#34; &#34; + lilei.getSex() + &#34; &#34; + &#34;出场&#34;);
Female hanmeimei = new Female();
hanmeimei.setName(&#34;韩梅梅&#34;);
System.out.println(hanmeimei.getName() + &#34; &#34; + hanmeimei.getSex() + &#34; &#34; + &#34;出场&#34;);
lilei.doPee();
hanmeimei.doPee();
lilei.learningEnglish();
hanmeimei.learningEnglish();
* 抽象出来的人
abstract class Human {
protected S
protected S
public void setSex(String sex) {
this.sex =
public String getSex() {
return this.
public void setName(String name) {
this.name =
public String getName() {
return this.
abstract void doPee(); // 抽象的方法
* 学习接口
interface Study {
public abstract void learningEnglish();
* 具象的男性
class Male extends Human implements Study {
public Male() {
this.sex = &#34;男&#34;;
* 实现的方法
public void doPee() {
System.out.println(this.name + &#34; &#34; + this.sex + &#34;站着撒尿.&#34;);
* 实现的接口
public void learningEnglish() {
System.out.println(this.name + &#34;: How are you?&#34;);
* 具象的女性
class Female extends Human implements Study {
public Female() {
this.sex = &#34;女&#34;;
* 实现的方法
public void doPee() {
System.out.println(this.name + &#34; &#34; + this.sex + &#34;蹲着撒尿.&#34;);
* 实现的接口
public void learningEnglish() {
System.out.println(this.name + &#34;: I&#39;m fine, thank you!&#34;);
Python 思想
python无以言状的灵活,你就是上帝!
这里我们只要创建一个根类,其他的东西,随时随地,想加就加。
class Human:
&#34;&#34;&#34;
&#34;&#34;&#34;
def __init__(self):
self.__name = &#34;&#34;
self.__sex = &#34;&#34;
def setName(self, name):
self.__name = name
def getName(self):
return self.__name
def setSex(self, sex):
self.__sex = sex
def getSex(self):
return self.__sex
name = property(getName, setName) # 就像java中的POJO setter以及getter
sex = property(getSex, setSex) # 就像java中的POJO setter以及getter
下面就边执行边丰满它
lilei = Human()
lilei.sex = &#34;男&#34;
lilei.name = &#34;李磊&#34;
print &#34;%s %s 出场&#34; % (lilei.name, lilei.sex)
hanmeimei = Human()
hanmeimei.sex = &#34;女&#34;
hanmeimei.name = &#34;韩梅梅&#34;
print &#34;%s %s 出场&#34; % (hanmeimei.name, hanmeimei.sex)
# Pee的方法
def doPee(self, how):
print &#34;%s %s %s撒尿&#34; % (self.name, self.sex, how)
Human.doPee = doPee #动态绑定方法
lilei.doPee(&#34;站着&#34;)
hanmeimei.doPee(&#34;蹲着&#34;)
# 学习的方法
def doLearning(self, learn):
print &#34;%s: %s&#34; % (self.name, learn)
Human.doLearning = doLearning #动态绑定方法
lilei.doLearning(&#34;How are you?&#34;)
lilei.doLearning(&#34;I&#39;m fine, thank you!&#34;)
_________________________________________________
output: 李磊 男 出场
output: 李磊韩梅梅 女 出场
output: 李磊 男 站着撒尿
output: 韩梅梅 女 蹲着撒尿
output: 李磊: How are you?
output: 李磊: I&#39;m fine, thank you!
python中一切对象都是鸭子类型,何谓鸭子类型?只要会&#34;嘎嘎&#34;叫的东西都是鸭子。应用到上面场景中,只要具有学习和撒尿方法的对象都可以看作人了。从另一方面说,我对于鸭子只关注它是否能够&#34;嘎嘎&#34;叫,如果能,不管是什么东西,那么它就是一只鸭子; 对于人,只关注他们是否能撒尿与学习,既能撒尿又能学习,他凭什么就不是人?
python和java就好像阴阳之替的东方玄学之余西方哲学。
这是所有的python代码
#!/usr/bin/env python
# -*- coding: utf-8 -*-
class Human:
&#34;&#34;&#34;
&#34;&#34;&#34;
def __init__(self):
self.__name = &#34;&#34;
self.__sex = &#34;&#34;
def setName(self, name):
self.__name = name
def getName(self):
return self.__name
def setSex(self, sex):
self.__sex = sex
def getSex(self):
return self.__sex
name = property(getName, setName) # 就像java中的POJO
sex = property(getSex, setSex) # 就像java中的POJO
if __name__ == &#39;__main__&#39;:
lilei = Human()
lilei.sex = &#34;男&#34;
lilei.name = &#34;李磊&#34;
print &#34;%s %s 出场&#34; % (lilei.name, lilei.sex)
hanmeimei = Human()
hanmeimei.sex = &#34;女&#34;
hanmeimei.name = &#34;韩梅梅&#34;
print &#34;%s %s 出场&#34; % (hanmeimei.name, hanmeimei.sex)
# Pee的方法
def doPee(self, how):
print &#34;%s %s %s撒尿&#34; % (self.name, self.sex, how)
Human.doPee = doPee #动态绑定方法
lilei.doPee(&#34;站着&#34;)
hanmeimei.doPee(&#34;蹲着&#34;)
# 学习的方法
def doLearning(self, learn):
print &#34;%s: %s&#34; % (self.name, learn)
Human.doLearning = doLearning #动态绑定方法
lilei.doLearning(&#34;How are you?&#34;)
lilei.doLearning(&#34;I&#39;m fine, thank you!&#34;)
面向对象之于Go,没有继承这么一说,更像是C与Python的结合体,并把鸭子类型发扬到极致。
接口(interface)就好比是一只&#34;鸭子&#34;,而interface结构体内包裹的方法就是这只&#34;鸭子&#34;所具有的功能,Go中,接口可以描述为: 具有这些功能的家伙就是这只&#34;鸭子&#34;
方法(func)被定义在结构(类/struct)之外,被绑定于这个结构之上,可以描述为: 这是它的功能,当一个struct中的一些方法都包含在某个interface中时,我们就说: 啊哈,这就是那只&#34;鸭子&#34;,哪怕它多长了几条腿(func),它也是啊
关于继承,没有,go中虽然内嵌很像继承但不是。继承是一脉相传,而go的内嵌表达出你中有我我中有你的情怀,需要用到某个struct的功能了,那么就对它说 你就是我的一部分
struct、interface、func 这些几乎就是Go面向对象的全部了,如此简洁。
package main
&#34;fmt&#34;
// 接口 学生
type Student interface {
learningEnglish(string)
type Human struct {
Name string
// 学习英语方法,绑定于Human
func (student Human) learningEnglish(learning string) {
fmt.Printf(&#34;%s: %s\n&#34;, student.Name, learning)
// 结构 男人
// go没有继承这个概念,这里是嵌入
type Male struct {
Human &#34;嵌入字段&#34;
type Female Male
// 方法, 绑定到了Human结构
func (this Human) Pee(how string) {
fmt.Printf(&#34;%s %s %s撒尿\n&#34;, this.Name, this.Sex, how)
func doLearning(learning Student, learing string) {
learning.learningEnglish(learing)
func doPee(human interface {}) {
switch sex := human.(type){
case Male:
sex.Pee(&#34;站着&#34;)
case Female:
sex.Pee(&#34;蹲着&#34;)
func main() {
lilei := Male{}
lilei.Name = &#34;李雷&#34;
lilei.Sex = &#34;男&#34;
fmt.Printf(&#34;%s %s 出场\n&#34;, lilei.Name, lilei.Sex)
hanmeimei := Female{}
hanmeimei.Name = &#34;韩梅梅&#34;
hanmeimei.Sex = &#34;女&#34;
fmt.Printf(&#34;%s %s 出场\n&#34;, hanmeimei.Name, hanmeimei.Sex)
doPee(lilei)
doPee(hanmeimei)
doLearning(lilei, &#34;How are you?&#34;)
doLearning(hanmeimei, &#34;I&#39;m fine, thank you!&#34;)
&最高记录 1364
&2012- Go语言中文网,中国 Golang 社区,致力于构建完善的 Golang 中文社区,Go语言爱好者的学习家园。
Powered by
&o&服务器由
赞助 &·&CDN 由
VERSION: V3.0.0&·&5.676919ms&·&为了更好的体验,本站推荐使用 Chrome 或 Firefox 浏览器
登录和大家一起探讨吧
记住登录状态
还不是会员

我要回帖

更多关于 雅思和托福有什么区别 的文章

 

随机推荐