Golang在线工具集:多数据库支持与JSON处理等实用功能

Golang在线工具集:多数据库支持与JSON处理等实用功能 该工具提供多功能在线工具,涵盖SQL转换与格式化、编码与加密、图像处理、数据转换与解析、正则表达式测试、IP与时间查询以及文本相似度计算。支持将多数据库SQL转换为Go结构体、XORM、GORM、Proto等代码,并可执行URL、Base64编码/解码、MD5加密、图像裁剪与压缩、YAML/JSON/XML格式转换、正则表达式替换匹配与代码生成。该工具还支持精确的IP查询、时间与时间戳转换,以及使用Levenshtein和Jaccard算法计算文本相似度,为开发者提供全面高效的解决方案。

image

在线Go工具


更多关于Golang在线工具集:多数据库支持与JSON处理等实用功能的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于Golang在线工具集:多数据库支持与JSON处理等实用功能的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


这个在线工具集确实为Go开发者提供了很多实用的功能,特别是多数据库SQL转换和JSON处理方面。以下是一些具体的使用示例:

1. SQL转Go结构体

// 输入SQL:
CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(255) UNIQUE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

// 工具生成的Go结构体:
type Users struct {
    ID        int       `gorm:"column:id;primaryKey;autoIncrement"`
    Name      string    `gorm:"column:name;not null"`
    Email     string    `gorm:"column:email;unique"`
    CreatedAt time.Time `gorm:"column:created_at;default:CURRENT_TIMESTAMP"`
}

2. JSON处理示例

// JSON格式化与压缩
package main

import (
    "encoding/json"
    "fmt"
)

func main() {
    // 原始JSON
    jsonStr := `{"name":"John","age":30,"city":"New York"}`
    
    // 格式化输出
    var data map[string]interface{}
    json.Unmarshal([]byte(jsonStr), &data)
    
    formatted, _ := json.MarshalIndent(data, "", "  ")
    fmt.Println(string(formatted))
    
    // 压缩输出
    compressed, _ := json.Marshal(data)
    fmt.Println(string(compressed))
}

3. 多数据库SQL转换

// MySQL转PostgreSQL示例
// MySQL语法:
SELECT * FROM users WHERE created_at > DATE_SUB(NOW(), INTERVAL 7 DAY);

// 转换后的PostgreSQL语法:
SELECT * FROM users WHERE created_at > NOW() - INTERVAL '7 days';

// 生成的GORM查询:
db.Where("created_at > ?", time.Now().AddDate(0, 0, -7)).Find(&users)

4. 编码解码功能

package main

import (
    "encoding/base64"
    "fmt"
)

func main() {
    // Base64编码
    text := "Hello, Go!"
    encoded := base64.StdEncoding.EncodeToString([]byte(text))
    fmt.Println("Encoded:", encoded)
    
    // Base64解码
    decoded, _ := base64.StdEncoding.DecodeString(encoded)
    fmt.Println("Decoded:", string(decoded))
    
    // URL编码(使用net/url)
    import "net/url"
    urlEncoded := url.QueryEscape("https://example.com/search?q=golang tools")
    fmt.Println("URL Encoded:", urlEncoded)
}

5. 文本相似度计算

package main

import (
    "fmt"
    "github.com/texttheater/golang-levenshtein/levenshtein"
)

func main() {
    // Levenshtein距离计算
    str1 := "kitten"
    str2 := "sitting"
    
    distance := levenshtein.DistanceForStrings(
        []rune(str1),
        []rune(str2),
        levenshtein.DefaultOptions,
    )
    
    fmt.Printf("Levenshtein距离: %d\n", distance)
    
    // Jaccard相似度计算
    jaccardSimilarity := calculateJaccard(str1, str2)
    fmt.Printf("Jaccard相似度: %.2f\n", jaccardSimilarity)
}

func calculateJaccard(s1, s2 string) float64 {
    set1 := make(map[rune]bool)
    set2 := make(map[rune]bool)
    
    for _, c := range s1 {
        set1[c] = true
    }
    for _, c := range s2 {
        set2[c] = true
    }
    
    intersection := 0
    for c := range set1 {
        if set2[c] {
            intersection++
        }
    }
    
    union := len(set1) + len(set2) - intersection
    return float64(intersection) / float64(union)
}

6. 时间戳转换

package main

import (
    "fmt"
    "time"
)

func main() {
    // 当前时间戳
    timestamp := time.Now().Unix()
    fmt.Printf("当前时间戳: %d\n", timestamp)
    
    // 时间戳转时间
    t := time.Unix(timestamp, 0)
    fmt.Printf("转换后的时间: %s\n", t.Format("2006-01-02 15:04:05"))
    
    // 时间转时间戳
    timeStr := "2024-01-01 12:00:00"
    parsedTime, _ := time.Parse("2006-01-02 15:04:05", timeStr)
    timestamp2 := parsedTime.Unix()
    fmt.Printf("时间转时间戳: %d\n", timestamp2)
}

这个工具集的优势在于将常用的开发功能集成在一个平台,特别是SQL到Go代码的转换功能,能显著提高开发效率。对于需要处理多种数据库或频繁进行数据格式转换的Go项目来说,这些工具非常实用。

回到顶部