范文无忧网范文学习范文大全

为什么我不会舍弃Python投奔Go语言

02月23日 编辑 fanwen51.com

[怎么我什么都不会怎么我什么都不配]怎么我什么都不会怎么我什么都不配,怎么我什么都不会 怎么我什么都不配的相关资源如下:欢乐颂2第13集插曲背景音乐歌曲名:家的滋味(歌词) 欢乐颂2第13集插曲是《家的滋味》,这...+阅读

在Go语言中,规定的方式是,函数返回错误信息。这没什么。如果一个文件并不存在,op.Open函数会返回一个错误信息。这没什么。如果你向你一个中断了的网络连接里写数据,net.Conn里的Write方法会返回一个错误。这没什么。这种状况在这种程序中是可以预料到的。这种操作就是容易失败,你知道程序会如何运行,因为API的设计者通过内置了一种错误情况的结果而让这一切显得很清楚。

从另一方面讲,有些操作基本上不会出错,所处的环境根本不可能给你提示错误信息,不可能控制错误。这才是让人痛苦的地方。典型的例子;一个程序执行

x[j],j值超出数组边界,这才痛苦。像这样预料之外的麻烦在程序中是一个严重的bug,一般会弄死程序的运行。不幸的是,由于这种情况的存在,我们很难写出健壮的,具有自我防御的服务器——例如,可以应付偶然出现的有bug的HTTP请求处理器时,不影响其他服务的启动和运行。为解决这个问题,我们引入了恢复机制,它能让一个go例程从错误中恢复,服务余下设定的调用。然而,代价是,至少会丢失一个调用。这是特意而为之的。引用邮件中的原话:“这种设计不同于常见的异常控制结构,这是一个认真思考后的决定。我们不希望像java语言里那样把错误和异常混为一谈。”

我刚开始提到的那篇文章里问“为什么数组越界造成的麻烦会比错误的网址或断掉的网络引出的问题要大?”答案是,我们没有一种内联并行的方法来报告在执行x[j]期间产生的错误,但我们有内联并行的方法报告由错误网址或网络问题造成的错误。

使用Go语言中的错误返回模式的规则很简单:如果你的函数在某种情况下很容易出错,那它就应该返回错误。当我调用其它的程序库时,如果它是这样写的,那我不必担心那些错误的产生,除非有真正异常的状况,我根本没有想到需要处理它们。

有一个你需要记在心里的事情是,Go语言是为大型软件设计的。我们都喜欢程序简洁清晰,但对于一个由很多程序员一起开发的大型软件,维护成本的增加很难让程序简洁。异常捕捉模式的错误处理方式的一个很有吸引力的特点是,它非常适合小程序。但对于大型程序库,如果对于一些普通操作,你都需要考虑每行代码是否会抛出异常、是否有必要捕捉处理,这对于开发效率和程序员的时间来说都是非常严重的拖累。我自己做开发大型Python软件时感受到了这个问题。

Go语言的返回错误方式,不可否认,对于调用者不是很方便,但这样做会让程序中可能会出错的地方显的很明显。对于小程序来说,你可能只想打印出错误,退出程序。对于一些很精密的程序,根据异常的不同,来源的不同,程序会做出不同的反应,这很常见,这种情况中,try

+

catch的方式相对于错误返回模式显得冗长。当然,Python里的一个10行的代码放到Go语言里很可能会更冗长。毕竟,Go语言主要不是针对10行规模的程序的。

就是要说明这一点:Go语言程序员认为,把error作为一种内置的类型是非常重要的。

延伸阅读:

我可能不会爱你经典台词我可能不会爱你经典台词 1、承认自己受伤了,并不丢脸。 2、Moment只适用于动情激素,却不能走一辈子。 3、谁不希望有一个人,愿意为自己“惊天动地”一下? 4、你不会爱我是因为...

为梦想舍弃父母凤凰男:为梦想舍弃父母 文/柯儿 有一首歌,用它那最朴实的语言唱进了每一个人的心底,让人朗朗上口的是那句“常回家看看,哪怕只是为爸爸妈妈捶捶后背揉揉肩……”也...

python可以开发什么项目呀Python有哪些用途?下面,为你一一解惑! 1、Web应用开发服务器端编程,具有丰富的Web开发框架,如Django和TurboGears,快速完成一个网站的开发和Web服务。典型如国内的豆瓣、果壳网等;...

如何使用python语言来实现测试开发对于各种驱动接口,Python来编写测试用例的好处是:由于Python不需要编译,你所执行的也就是你所编写的,当发生异常的时候,你无须打开集成开发环境,加载测试工程、并调试,你能够很方便...

父亲母亲妻子孩子当中一定要舍弃一个你会舍弃谁??你既然出了这么一个问题。我来告诉你应该舍谁。 母亲是肯定不能舍弃的。除非你不是她亲生的。就算不是她亲生的,那也不能舍弃,因为她肯定为你付出最多。 父亲,现在只能说是名义...

题目有关Python语言的题急晕....又碰到一个是这个做也的好友...给你贴下代码吧..哈哈 第一题: #!/usr/bin/env python #-*- coding: GB2312 -*- while True: filename = raw_input('输入文本路径:') if f...

求一段Python编程语言求设计一段Python编程语言解答下列问题回炉了一下几何,图形学用到 import math class Point: def __init__(self): self.x=0 self.y=0 def input(self,pname): self.x=int(input("Enter the x of point {0}: ".forma...

关于python语言的小程序题求指点谢谢了!import random a=[] i=random.randint(1,10) for j in range(1,i+1): x=random.randint(0,9) a.append(x) print a k=random.randint(1,10) b=[] for m in range(1,k+1): y=...

什么歌曲中有:我知道你不会在爱我我知道你不会在想我???留给我的只剩下回忆 演唱:笑天 词曲:笑天 你说过永远不离开我 你说过喜欢我的执着 从此我的心 为了你上了锁 那是你不了解的快乐 我以为你会撕守承诺 可为何现在如此冷漠 你红...

推荐阅读
图文推荐
栏目列表