anysimpletype

package module
v0.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 20, 2025 License: MIT Imports: 8 Imported by: 0

README

Пакет go-anysimpletype

Go Reference

Пакет anytype предоставляет тип AnySimpleType для работы с простыми типами данных в Golang, обеспечивая сериализацию и десериализацию в различных форматах.

Особенности

  • Поддержка основных типов: string, int, float, bool, nil
  • Сериализация/десериализация в форматах:
    • XML
    • JSON
    • YAML
    • Текстовый формат
  • Автоматическое определение типов при парсинге строк
  • Обработка граничных случаев:
    • Числа больше int64 сохраняются как строки
    • "0" и "1" интерпретируются как числа
    • Регистронезависимое распознавание булевых значений

Установка

go get git.ymnuktech.ru/ymnuk/go-anysimpletype

Использование

Импорт пакета
import "git.ymnuktech.ru/ymnuk/go-anysimpletype"
Основные методы
// Создание экземпляра
a := &anytype.AnySimpleType{}

// Установка значения
err := a.Set(42) // int
err := a.Set("text") // string
err := a.Set(true) // bool
err := a.Set(3.14) // float
err := a.Set(nil) // nil

// Получение значения
value := a.Get()

// Строковое представление
str := a.String()
Пример работы с форматами
// XML
xmlData, _ := xml.Marshal(a)
xml.Unmarshal(xmlData, &a)

// JSON
jsonData, _ := json.Marshal(a)
json.Unmarshal(jsonData, &a)

// YAML
yamlData, _ := yaml.Marshal(a)
yaml.Unmarshal(yamlData, &a)

// Text
textData, _ := a.MarshalText()
a.UnmarshalText(textData)

Примеры

Установка и получение значений
package main

import (
	"fmt"
	"git.ymnuktech.ru/ymnuk/go-anysimpletype"
)

func main() {
	a := anytype.AnySimpleType{}
	
	// Установка целого числа
	a.Set(42)
	fmt.Println(a.Get()) // 42
	
	// Установка строки
	a.Set("hello")
	fmt.Println(a.String()) // "hello"
	
	// Установка булева значения
	a.Set(true)
	fmt.Println(a.Get()) // true
}
Сериализация в JSON
package main

import (
	"encoding/json"
	"fmt"
	"git.ymnuktech.ru/ymnuk/go-anysimpletype"
)

func main() {
	a := anytype.AnySimpleType{}
	a.Set(3.14)
	
	data, _ := json.Marshal(a)
	fmt.Println(string(data)) // 3.14
	
	var b anytype.AnySimpleType
	json.Unmarshal(data, &b)
	fmt.Println(b.Get()) // 3.14
}
Автоматическое определение типов
package main

import (
	"fmt"
	"git.ymnuktech.ru/ymnuk/go-anysimpletype"
)

func main() {
	var a anytype.AnySimpleType
	
	a.UnmarshalText([]byte("123"))
	fmt.Printf("%T\n", a.Get()) // int64
	
	a.UnmarshalText([]byte("123.456"))
	fmt.Printf("%T\n", a.Get()) // float64
	
	a.UnmarshalText([]byte("true"))
	fmt.Printf("%T\n", a.Get()) // bool
	
	a.UnmarshalText([]byte("12345678901234567890"))
	fmt.Printf("%T\n", a.Get()) // string
}

Тестирование

Для запуска тестов выполните:

go test -v

Тесты покрывают:

  • Основные типы данных
  • Сериализацию/десериализацию во всех форматах
  • Граничные случаи
  • Обработку ошибок

Ограничения

Поддерживаются только простые типы данных:

  • string
  • int, int8, int16, int32, int64
  • uint, uint8, uint16, uint32, uint64
  • float32, float64
  • bool
  • nil

Попытка установить другие типы (слайсы, структуры и т.д.) вернет ошибку.

Лицензия

Этот проект распространяется под лицензией MIT. См. LICENSE для подробностей.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AnySimpleType

type AnySimpleType struct {
	// contains filtered or unexported fields
}

func (*AnySimpleType) Get

func (a *AnySimpleType) Get() interface{}

func (AnySimpleType) MarshalJSON

func (a AnySimpleType) MarshalJSON() ([]byte, error)

func (*AnySimpleType) MarshalText

func (a *AnySimpleType) MarshalText() ([]byte, error)

func (AnySimpleType) MarshalXML

func (a AnySimpleType) MarshalXML(e *xml.Encoder, start xml.StartElement) error

func (AnySimpleType) MarshalYAML

func (a AnySimpleType) MarshalYAML() (interface{}, error)

func (*AnySimpleType) Set

func (a *AnySimpleType) Set(v interface{}) error

func (*AnySimpleType) String

func (a *AnySimpleType) String() string

func (*AnySimpleType) UnmarshalJSON

func (a *AnySimpleType) UnmarshalJSON(data []byte) error

func (*AnySimpleType) UnmarshalText

func (a *AnySimpleType) UnmarshalText(text []byte) error

func (*AnySimpleType) UnmarshalXML

func (a *AnySimpleType) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error

func (*AnySimpleType) UnmarshalYAML

func (a *AnySimpleType) UnmarshalYAML(value *yaml.Node) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL