草庐IT

Transforms类型

全部标签

c - 用 C 扩展 Go 编程语言,转换数据类型

如何将数据类型从c转换为go,反之亦然?例如,我有一个返回整数数组的函数:char*Test(){char*msg="Hello,Go";returnmsg;}如何将其转换为slice或数组?--更新--在Go文件中,我可以使用C.GoString(C.Test())将返回类型转换为GoString。我正在寻找这些功能的完整文档。 最佳答案 你应该看看http://golang.org/cmd/cgo/.这是一个使用它的例子http://golang.org/misc/cgo/gmp/gmp.go

go - 当我的值为结构类型时如何填充 map[string] interface{}?

我想构建一个与下面的PurchaseOrder结构等效的JSON:typePurchaseOrderstruct{StatestringFsmNamestringSupplierstringReceiverstringTradeItemsmap[string]PRTradeItem}typePRTradeItemstruct{Quantityfloat64`json:"quantity"`Supplierstring`json:"supplier"`Receiverstring`json:"receiver"`PricePerUnitfloat64`json:"pricePerUnit

go - 处理不同数据类型的方法

我想制作一个接受不同数据类型的方法,但Go没有泛型。我必须编写以下重复代码:funcGetRandomSubarrayInt64(candidates[]int64,lengthint)[]int64{result:=make([]int64,0,length)iflen(candidates)==0{returnresult}iflen(candidates)代码几乎是重复的,有没有办法减少重复代码? 最佳答案 您可以定义一个接口(interface),该接口(interface)导出方法以交换通用底层数组中的项目。然后,您将需要

function - 如果存在一个没有方法的类型,你能认为它是一个对象吗?

要拥有一个对象,我们需要同时拥有类型声明和方法吗?typeIntSet{words[]uint64}func(s*IntSet)Method(xint)int{}即你声明一个类型:typeIntSet{words[]uint64}但保持原样,这还能被认为是一个对象吗? 最佳答案 通常是一个对象,任何类型的实例。没有方法的类型仍然是一种类型,它只是解释了它拥有什么以及可以操纵它的东西。您可能会想到golang技术上没有的类,但您可以将类型+方法视为类。如果没有方法,它们更接近于结构。 关于

reflection - Go 中的泛型编程。避免硬编码类型断言

我正在编写通用缓存机制,我需要在结构中设置一些属性,只知道它们的反射类型、属性名称和反射值。要在属性中设置的值,但我无法避免类型断言,这使我的代码不通用...funcmain(){addressNew:=Address{"NewAddressdescription!"}//Intherealproblem,iknowthereflect.Typeofvalue,but//thestructcametomeasainterface{},justlikethismethod//Returnmanykindsofvaluesfromredisasinterface{},//(Customer

arrays - 我如何在 golang 中定义这种类型的数据

我有一个类似'{"{\"hello\":\"world\"}"}'的数据,它是postgresql中的数组json。不知道golang怎么处理。我知道我可以用string定义然后使用json.Unmarshal解决问题,但我想知道是否有办法在struct中获取它 最佳答案 我假设您发布了不正确的JSON,假设它是'{"hello":"world"}一个结构有一个预定义的字段,并且随着任意JSON的到来,不可能提前知道。可能的解决方案是将其转换为map。vardatainterface{}b:=[]byte(`{"hello":"wo

go - 基于字符串断言类型?

假设我有以下内容:typeTstruct{Namestring}然后我创建一个T类型的变量:thing:=T{"HelloWorld"}然后我反射(reflect)类型:t:=reflect.TypeOf(thing)//main.T然后我将t传递给一个接受接口(interface)的方法,有什么方法可以让我在那个方法中说接受的interface{}是类型main.T如果我有那个字符串?用例是我有一个适合某种类型的json字符串。我有一个该类型的字符串(main.T),我希望能够创建一个类型为main.t的新变量,当我只知道string,main.T然后将数据编码到那个新变量。

go - 具有指针类型接收器的方法不会在反射中列出

我试图通过使用反射来调用一个类型的所有方法来概括我的代码。它简单明了,但存在一个问题,reflection.TypeOf(T).NumMethods(或其他方法)忽略了使用接收器类型作为指针的方法。例如,这段小代码将打印1而不是2:packagemainimport("fmt""reflect")typeFoostruct{}func(fFoo)Bar(){}func(f*Foo)Baz(){}funcmain(){obj:=Foo{}fmt.Println(reflect.TypeOf(obj).NumMethod())}您可以在playground中运行.它打印1因为Bar方法。如

go - 我怎么可能有基于接收者的不同返回类型的方法?

我有以下界面:typeExampleInterfaceinterface{GetFirstItemInSlice()}funcGetFirstItemInSlice(sliceExampleInterface){slice.GetFirstItemInSlice()}func(sliceIntSlice)GetFirstItemInSlice(){//Omittedforbrevity.}func(sliceStringSlice)GetFirstItemInSlice(){//Omittedforbrevity.}现在,很明显,我的两个具有接收者的函数(底部的两个)将要返回不同的类型

oop - 在 golang 中将类型定义为引用

令我惊讶的是这个街区typeObject*struct{Xint}在golang中编译。但是,我不知道如何创建底层结构的实例。在功能上,我想要实现的是在没有hack的情况下从所有类型签名中删除所有星号(重新定义类型和其他技巧)。这将使类型/结构非常像Java类。问题是——golang支持这种结构吗?还是我应该坚持到处放星星? 最佳答案 如果您不想到处传递指针,则不必这样做。您可以按值传递结构。例如将您的结构定义为:typeObjectstruct{Xint}然后将您的函数定义为:funcDoStuffToObject(objObje