草庐IT

强制转换

全部标签

pointers - 无法反射(reflect)不返回指针,编译器在转换时出现 panic ?

围绕这样的东西编写的代码导致了一个问题:funcCreateNewItemOfType(returnTypereflect.Type)(interface{}){returnreflect.New(returnType).Interface();}...如何实际返回returnType的结构而不是指向结构的指针,如reflect在这里创建的那样?编译器可以很好地构建它,但在运行时会出现panic,但不会在此处的return调用前接受星号,以便实际返回结构而不是指针。 最佳答案 reflect.New()创建指定类型的新值,并返回re

git - 强制 godep 在 circle build 中通过 SSH 从 github 中 pull 包

我们在单独的repos中有go包到正在构建的包中。我们已经使用github用户key(https://circleci.com/docs/github-security-ssh-keys/)设置了构建,以便它可以访问包含依赖项的私有(private)存储库。但是,调用godeprestore会导致gitclonehttps://...调用。是否可以使用SSH类型的url强制godep恢复包?或者,是否可以以某种方式使用用户key通过HTTPS启用身份验证?我已经尝试了这里建议的所有内容,但到目前为止没有任何乐趣:https://gist.github.com/shurcooL/6927

date - 如何将日期从一种格式转换为另一种golang格式

我正在将日期转换为unix时间戳并使用拆分获取日期,如下所示tm:=time.Unix(1470009600,0).UTC()dateString:=strings.Split(tm.String(),"")dateString的输出是2016-07-15即YYYY-MM-DD格式。如何将其转换为DD-MMM-YY格式?例如:2016年7月15日? 最佳答案 使用Format具有适当格式的方法:fmt.Println(tm.Format("02-Jan-06"))//Prints"01-Aug-16".Playground:http

go - go中的二维 slice 类型转换

我不得不为[]string定义一个特定的类型,因为我为strSlice类型实现了一个自定义的yaml解析器。现在我需要将[]strSlice转换回[][]string但go编译器1.7.1拒绝它作为错误。typestrSlice[]stringvarx1[]strSlicevarx2[][]string...x2=[][]string(x1)如何执行转换操作? 最佳答案 您正在使用命名类型的字符串slice。您需要先将x1中的每个条目转换回[]string:typestrSlice[]stringvarx1[]strSlicevar

arrays - 如何将字符串转换为 JSON 并将数据保存在数组中?

我正在使用thisJSON解析器,用于从我从API获得的JSON响应中提取数据。它返回一个包含数据的字节数组,当将字节数组转换为字符串并打印它时,我得到以下输出:[{"Name":"Vikings","Type":"show"},{"Name":"Spartacus:GodsOfTheArena","Type":"show"},{"Name":"TrueDetective","Type":"show"},{"Name":"TheBorgias","Type":"show"},{"Name":"Se7en","Type":"movie"}]因为这是一个常规字符串,所以我无法操纵数据来提取

goyaml 将字符串转换为 int 常量

假设我们有如下go代码typeSectionTypeintconst(HeaderSectionType=iotaFooterBody)varsectionTypeNames=map[string]SectionType{"header":Header"footer":Footer"body":Body}typePagestruct{Sections:[]SectionType`yaml:"sections"`}我们有以下yamlpage1:-header-body有没有办法让goyaml将我们反序列化Page结构? 最佳答案 go

arrays - 如何从指向单个对象的指针重新转换指向数组的指针

我尝试在我的porogram中找到方法,使用interface{}作为特定函数的参数,将beetwen类型指针解析为指向单个对象的数组形式的指针。这次我使用以下方式得到这个结果:funcobject(vinterface{}){ifstrings.HasPrefix(reflect.TypeOf(v).String(),"*[]"){//pointertoarray}else{//pointertosingleobject}}以上方法可行,但对我来说这不是干净的代码。我认为存在一些更好的方法来使用golang包作为类型来解决这个问题,但现在我不知道如何解决这个问题,所以请您提出建议。附

go - 强制 Go 类型实现接口(interface)

在Go中,你不需要声明你需要实现一个接口(interface),你只是去做(它被称为“结构化类型”,类似于动态语言中的“鸭子类型”)。如果你想强制一个类型实现一个接口(interface)怎么办(比如当你在C#或Java中“继承”一个接口(interface)时)?换句话说,如果忘记实现接口(interface)(或签名错误)是一个错误并且您想及早发现该错误怎么办。最好的方法是什么? 最佳答案 你可能做的最好的事情就是尝试将类型的实例分配给接口(interface)变量例如,您要确保类型A实现了Stringer接口(interfac

json - 如何将 "push"一个 json 对象转换为 Go 中的数组?

我只是从Redis数据库中获取json并尝试将其附加到数组。在Javascript中我会做这样的事情:varmyarray=[];//blahblahcontactRedisandgettheresponsemyarray.push(redisresponse);我无法弄清楚如何在Go中执行此操作。欢迎提出图书馆建议! 最佳答案 假设您想从Redis获得一个字符串响应。使用redigo库,您可以发送命令并使用它的辅助方法接收响应。这是您如何做到这一点的片段:import"github.com/garyburd/redigo/redi

json - Golang 将字符串转换为单独的 json 值而不是列表,类似于 python 中的 json.loads

对于这个菜鸟问题深表歉意。我正在尝试将字符串转换为json。该字符串已经是json格式,如{"system1":"Service1","System2":"Service2"}或{"system1":"Service1","device":"Service10","Something":"port22"}等等。这个键值对的编号在编译时是未知的,只有在运行时才知道。我能够将它加载到一个结构中,具有预定义的固定键名,但由于键的数量不同,我无法生成关于字符串结构的json。我不是要将它推送到string:[]map[string]string我的目标是单独生成类似于python的json.l