Rumah > pembangunan bahagian belakang > Golang > Bina skema menggunakan jenis data yang ditentukan dalam datatype.go yang dilaksanakan oleh anak panah apache golang

Bina skema menggunakan jenis data yang ditentukan dalam datatype.go yang dilaksanakan oleh anak panah apache golang

WBOY
Lepaskan: 2024-02-06 08:36:07
ke hadapan
553 orang telah melayarinya

使用golang apache arrow实现的datatype.go中指定的数据类型来构建模式

Kandungan soalan

Saya sedang belajar anak panah apache dan ingin mengetahui lebih lanjut tentang cara mencipta rekod skema dan anak panah. Saya telah merujuk beberapa bahan untuk ini, tetapi setakat ini kesemuanya hanya menggunakan jenis primitif untuk membina corak seperti ini: `

schema := arrow.NewSchema(
    []arrow.Field{
        {Name: "f1-i32", Type: arrow.PrimitiveTypes.Int32},
        {Name: "f2-f64", Type: arrow.PrimitiveTypes.Float64},
    },
    nil,
)
Salin selepas log masuk

Sesetengah jenis data tidak wujud dalam jenis primitif yang saya ingin gunakan. Sebagai contoh, saya ingin menggunakan bool atau decimal128. Saya sedang melihat perpustakaan anak panah golang dan menemui fail datatype.go yang mengandungi semua jenis data yang mungkin saya mahu gunakan. Tetapi jenis di sini bukanlah jenis datatype yang diperlukan semasa membina corak.

Jadi, saya ada tiga soalan berikut:

  1. Jika boleh, bagaimana saya boleh membina skema saya menggunakan jenis data ini dalam datatype.go?
  2. Jika saya ingin menggunakan jenis perpuluhan, bagaimanakah cara saya menentukan ketepatan dan bilangan tempat perpuluhan?
  3. Contoh menggunakan jenis lanjutan.


Jawapan Betul


Jenis data bernama pemalar ini yang ditakrifkan dalam datatype.go 中定义的这些数据类型命名常量已用于创建您想要的新类型的一部分。其中一些是 type decimal128type structtype booleantype struct 如果您检查这些结构的 id 方法的源代码,它们返回在 datatype.go 中定义的常量,其名称与结构的名称相似。这些结构已经实现了 datatype 接口,这意味着您可以将它们分配给 arrow.field.type 因为该字段的类型是 datatype telah digunakan sebagai sebahagian daripada mencipta jenis baharu yang anda mahukan. Sebahagian daripadanya ialah
dan
Jika anda menyemak kod sumber kaedah id struktur ini, ia mengembalikan pemalar yang ditakrifkan dalam bool 中定义的常量 datatype.godatatype_fixedwidth.go 中用作 type booleantype structid dengan nama yang serupa dengan nama struktur. Struktur ini sudah melaksanakan antara muka
, yang bermaksud anda boleh menetapkannya kepada arrow.field.type kerana jenis medan ialah func (t *booleantype) id() 类型 { return bool }.
Apa yang saya maksudkan kepada mereka ialah: type decimal128type struct Pemalar
yang ditakrifkan dalam bool digunakan dalam datatype_fixedwidth.go sebagai nilai pulangan kaedah id func (*decimal128type) id() 类型 { return decimal128 }.

datatype Perkara yang sama berlaku untuk

.

type decimal128type struct.
datatypeKaedah pada salah satu daripada struct ini menunjukkan bahawa mereka sedang melaksanakan antara muka

:

func (*decimal128type) bitwidth() int
func (t *decimal128type) fingerprint() string
func (*decimal128type) id() type
func (*decimal128type) name() string
func (t *decimal128type) string() string
Salin selepas log masuk
type booleantype structKaedah ini sesuai untuk

.

Dan definisi typeantara muka:

type datatype interface {
    id() type
    // name is name of the data type.
    name() string
    fingerprint() string
}
Salin selepas log masuk

berjaya juga.

Jadi anda boleh menggunakannya untuk

medan:

Contoh tunjuk cara:
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)
}
Salin selepas log masuk

Keluaran:

schema:
  fields: 2
    - f1-bool: type=bool
    - f2-decimal128: type=decimal(1, 1)
Salin selepas log masuk
🎜Anda boleh menemuinya dalam 🎜Dokumen🎜. 🎜 Terdapat juga sesuatu yang berkaitan dengan jenis sambungan. 🎜 Tetapi saya tidak biasa dengan jenis sambungan jadi saya tidak dapat menunjukkan contohnya. Tetapi jika anda sudah biasa dengannya, anda boleh menyelesaikannya dengan mudah. 🎜

Atas ialah kandungan terperinci Bina skema menggunakan jenis data yang ditentukan dalam datatype.go yang dilaksanakan oleh anak panah apache golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan