go相关内容

为什么除了错误处理之外添加恐慌和恢复?

为什么Go最终采用异常处理的恐慌/恢复,当语言如此惯用,强烈的提倡错误代码? Go想象的设计者不会通过错误代码处理哪些场景,并且需要进行紧急/恢复? 我理解约定说限制panic / recover,但是运行时也限制了在C ++中不能将它们作为一般的throw / catch来使用? 解决方案 strong> 在Go的早期(1.0版之前)没有 recover()。调用 panic ..
发布时间:2017-08-28 03:03:03 开发方法

退出时出现错误代码?

退出的文档说明“程序立即终止,延迟功能不运行”。和log.Fatal只是调用Exit。对于不是令人发指的错误,终止程序而不运行延迟的功能似乎是极端的。 我应该传递一些状态,表示出现错误,然后在某个点我知道我可以安全地退出所有延迟的函数已经运行了,然后调用Exit(1)? 解决方案 p>我在大多数真正的主要包中按照这些方式做了一些事情,所以采用 return err 约定尽快,并且正确终 ..
发布时间:2017-08-28 01:31:51 开发方法

在古郎中编写仿制药物,不用泛型

我知道Go在将来不会有仿制药,而且有一些建议可以用其他的结构代替它们。但是,下面我的例子卡住了。 func P(any interface {},err error)(interface {}){ if err!= nil { panic(“error:”+ err.Error()) } 返回任何 } 您可能会猜到,我试图在任何错误上失败,并希望将 P()任何返回两 ..
发布时间:2017-08-28 01:23:06 开发方法

在高隆赶上恐慌

使用以下代码,如果没有给出文件参数,则会抛出第9行的紧急情况 panic:runtime error:index out of range as expected。 我如何抓住这个恐慌,直接传递给它时处理它( os.Args [1] )导致恐慌?很像PHP中的try / catch或者在Python中尝试/除外。 我在StackOverflow上搜索了一下,但是我没有找到任何答案。 ..
发布时间:2017-08-28 01:22:23 开发方法

Golang:终止或中止HTTP请求

链接到我的服务电话: http://creative.test.spoti.io/api/getVastPlayer?add= {“Json”:Json}& host = api0.spoti.io& domain = domain& userAgent = userAgent& mobile = true 要打电话给我服务客户端需要发送一个Json和一些参数。 ..
发布时间:2017-08-28 01:01:58 开发方法

在Go中更简单的错误处理

我看看我的代码,发现它是错误的处理程序: err = result.Scan(& bot.BID& bot.LANGUAGE,& bot.SOURCE) 如果err!= nil { log.Fatalf(“result.Scan:%v”,err) return } fileName,err:= copySourceToTemporaryFile(bot) 如果err!= ni ..
发布时间:2017-08-28 00:55:32 开发方法

处理多个错误

我很高兴找到错误处理是非常冗长的。我已经阅读了它的推理,大多同意,但是有几个地方似乎有更多的代码来处理错误,而不是实际做的。这是一个(设计的)例子,我在那里管道“Hello world!”进入猫并读取并打印输出。基本上每一行都有三个处理错误,而我甚至没有处理任何东西。 package main import“fmt” import“io” import“io / ioutil” ..
发布时间:2017-08-28 00:42:55 开发方法

如果在调用http.Get(url)时发生错误,我们需要关闭响应对象吗?

在下面的代码中,还需要在错误情况下关闭响应正文: res,err:= http.Get(url) 如果err!= nil { log.Printf(“Error:%s\\\ ”,err) } defer res.Body.Close() 解决方案 一般概念是,当一个函数(或方法)具有多个返回值时,一个是错误,应首先检查错误,只有在错误为零。如果存在错误,函数应返 ..
发布时间:2017-08-28 00:35:03 开发方法

你如何获得一个Golang程序来打印它刚刚调用的错误的行号?

我试图在我的Golang程序中使用 log.Fatal 错误,但是, log.Fatal 不也打印出 log.Fatal 的运行行。有没有办法获得访问称为log.Fatal的行号?那就是有一种方法可以在抛出错误时得到行号? 我试图google这个但不确定如何。我可以得到的最好的事情是打印堆栈跟踪,我猜这是好的,但也可能有点太许多。我也不想在每次需要行号时写入 debug.PrintStack ..
发布时间:2017-08-28 00:20:19 开发方法

断言邪恶?

Go 语言创作者写: Go不提供断言。他们无疑是方便的,但我们的经验是程序员将它们用作拐杖,以避免考虑正确的错误处理和报告。正确的错误处理意味着服务器在非致命错误而不是崩溃后继续运行。正确的错误报告意味着错误是直接的,至此,节省程序员解释大的崩溃痕迹。程序员看到错误不熟悉代码时,精确的错误尤其重要。 你对此有何看法? p> 解决方案 不,只要你使用它,只要 assert ..
发布时间:2017-08-28 00:18:55 C/C++开发

Go:单值上下文中的多个值

由于Go中的错误处理,我经常会遇到多个值的功能。到目前为止,我已经管理这个方法已经非常混乱,我正在寻找编写更干净的代码的最佳做法。 假设我有以下功能: p> 类型项目结构{ 值int 名称字符串 } func Get(value int)(Item,error){ // some code return item,nil } / pre> 如何将一 ..

如何设置最后的环境变量?在去

我正在使用 Go OS 设置一些环境变量, p> err:= os.Setenv(“DBHOST”,dbHostLocal) 如果err!= nil { log .Fatalf(“err%v”,err) } Go程序可用,但一旦我完成/终止Go进程,变量就不再可用了。我想知道是否可以永久设置这些变量。原因是我正在寻找用于本地和开发环境的配置文件(db name etc ..
发布时间:2017-08-25 20:45:21 开发方法

无法在Mac OSX上设置$ GOPATH

我正在设置我的 $ GOPATH 变量来运行我机器上的一些示例代码: $ smitego-example go run main.go main.go:5:2:找不到包“github.com/#GITHUB_USERNAME#/smitego”的任何一个: /usr/local/go/src/pkg/github.com/#GITHUB_USERNAME#/smitego(来自$ G ..
发布时间:2017-08-25 19:09:02 开发方法

可以在Golang中创建String()来获取枚举名称

是否可以在Golang中创建 func(TheEnum)String()string 来获取枚举名称? const( MERCURY = 1 VENUS = iota EARTH MARS JUPITER SATURN URANUS NEPTUNE PLUTO ) 还是有一种方式在飞行中定义常量? 我发现两种方式 struct 和字符串 ..
发布时间:2017-08-23 21:48:43 其他开发

Go中代表枚举的惯用方式是什么?

我正在试图表示一个简化的染色体,它由N个碱基组成,每个碱基只能是 {A,C,T,G} 之一。 我想使用枚举来限制约束,但我想知道在Go中最常用的模拟枚举的方法是什么。 解决方案 从语言规范中引用: Iota 在常量声明中,预先声明的标识符iota表示连续的无类型整数常量。每当保留字常数出现在源中并在每个ConstSpec后递增,它将复位为0。它可以用于构造一组相关的常量: ..
发布时间:2017-08-23 19:40:30 其他开发

使用AES-CFB时,Go和Pycrypto的不同结果

我正在将一个go应​​用程序添加到已经存在的python代码库中。处理语言之间的加密问题一直很麻烦。这是使用go 1.2.1和Python 2.7.x / PyCrypto 2.7a1。 这是Python示例: import Crypto.Cipher import Crypto.Hash.HMAC import Crypto.Hash.SHA256 import Cry ..
发布时间:2017-08-18 00:34:41 Python

Golang用AES和Base64加密字符串

我试图加密数据库中的一些文本,以在程序启动期间加载和解密。我尝试过几种方法,包括第三方库 https://github.com/richard-lyman/lithcrypt 无效。使用以下方法加密/解密8/10个项目,但似乎在加密/解密中的某个时间点留下了一些填充残差。因为它是我的代码是这样的: 包客户端 import( “encoding / base64” “crypto / ae ..
发布时间:2017-08-17 23:36:09 开发方法

去编码转换问题

我有以下代码: import( “log” “net / http“ ”code.google.com/p/go.text/transform“ ”code.google.com/p/go.text/encoding/charmap“ ) ... res,err:= http.Get(url) 如果err!= nil { log.Println(“Can ..
发布时间:2017-08-17 02:49:45 开发方法

如何检测字节何时无法转换为字符串?

有不能转换为Unicode字符串的无效字节序列 。在Go中将 []字节转换为 string 时,如何检测? 解决方案 正如Tim Cooper所说,你可以用 utf8.Valid 。 但是!您可能会认为将非UTF-8字节转换为Go 字符串是不可能的。实际上,“在Go中,一个字符串实际上是一个只读字节的片段”;它可以包含无效UTF-8的字节,您可以打印,通过索引访问,甚至往返回到 [] ..
发布时间:2017-08-17 02:00:39 开发方法