我正在学习 apache arrow,想要了解有关如何创建模式和箭头记录的更多信息。为此,我引用了一些材料,但到目前为止,所有这些材料都只是使用原始类型来构建如下所示的模式:`
schema := arrow.NewSchema( []arrow.Field{ {Name: "f1-i32", Type: arrow.PrimitiveTypes.Int32}, {Name: "f2-f64", Type: arrow.PrimitiveTypes.Float64}, }, nil, )
我想要使用的 primitivetypes 中不存在一些数据类型。例如,我想使用bool或decimal128。我正在查看 golang 箭头库,发现文件 datatype.go
,其中包含我想要使用的所有可能的数据类型。
但这里的类型不是构建模式时所需的 datatype
类型。
所以,我有以下三个问题:
datatype.go
中的这些数据类型来构建我的架构?在 datatype.go
中定义的这些数据类型命名常量已用于创建您想要的新类型的一部分。其中一些是 type decimal128type struct
和 type booleantype struct
如果您检查这些结构的 id
方法的源代码,它们返回在 datatype.go
中定义的常量,其名称与结构的名称相似。这些结构已经实现了 datatype
接口,这意味着您可以将它们分配给 arrow.field.type
因为该字段的类型是 datatype
中定义的这些数据类型命名常量已用于创建您想要的新类型的一部分。其中一些是
和
如果您检查这些结构的 id
方法的源代码,它们返回在 bool
中定义的常量 datatype.go
在 datatype_fixedwidth.go
中用作 type booleantype struct
的 id
中定义的常量,其名称与结构的名称相似。这些结构已经实现了
接口,这意味着您可以将它们分配给 arrow.field.type
因为该字段的类型是 func (t *booleantype) id() 类型 { return bool }
。
我对他们的意思是:type decimal128type struct
bool
中定义的常量
在 datatype_fixedwidth.go
中用作 func (*decimal128type) id() 类型 { return decimal128 }
的 id
方法的返回值。
datatype
同样的事情也适用于
type decimal128type struct
.
datatype
这些结构之一的方法显示它们正在实现
func (*decimal128type) bitwidth() int func (t *decimal128type) fingerprint() string func (*decimal128type) id() type func (*decimal128type) name() string func (t *decimal128type) string() string
type booleantype struct
这些方法适用于 。
以及type
接口的定义:
type datatype interface { id() type // name is name of the data type. name() string fingerprint() string }
因此,您可以将它们用于
package main import ( "fmt" "github.com/apache/arrow/go/arrow" ) func main() { booltype := &arrow.booleantype{} decimal128type := &arrow.decimal128type{precision: 1, scale: 1} schema := arrow.newschema( []arrow.field{ {name: "f1-bool", type: booltype}, {name: "f2-decimal128", type: decimal128type}, }, nil, ) fmt.println(schema) }
schema: fields: 2 - f1-bool: type=bool - f2-decimal128: type=decimal(1, 1)
以上是使用golang apache arrow实现的datatype.go中指定的数据类型来构建模式的详细内容。更多信息请关注PHP中文网其他相关文章!