English | 中文 README
A small collection of Go utility packages focused on string helpers and basic system utilities, with minimal third‑party dependencies.
- No third‑party deps: Prefer using the Go standard library where possible
- String utilities (
stringutils):- Emptiness and whitespace:
IsEmpty,IsNotEmpty,IsBlank,IsNotBlank,Trim,TrimToEmpty - Substrings and checks:
ContainsAny,ContainsAll,SubstringBefore,SubstringAfter,StartsWith,EndsWith - Transformations:
Capitalize,Uncapitalize,ReverseString,ToUpperCase,ToLowerCase - Replace and join:
Join,Split,Replace,ReplaceAll,Repeat - Padding and centering:
PadLeft,PadRight,Center - Misc:
Truncate,TruncateWithSuffix,CountMatches,DefaultIfEmpty,DefaultIfBlank
- Emptiness and whitespace:
- System utilities (
systemutils):- CPU utilities (
cpuutils):GetCPUInfo- retrieve CPU cores, usage percentage, and load averages - Memory utilities (
memutils):GetMemInfo- get total, available, and used memory - Disk utilities (
diskutils):GetDiskInfo- get disk space information including total, free, used space and usage ratio
- CPU utilities (
- Module path:
github.com/Rodert/go-commons - Go version:
1.24.7
go get github.com/Rodert/go-commonsThis project uses Git hooks to automatically format Go code before each commit.
To install the pre-commit hook:
make hooksThis project includes an interactive API documentation interface using Swagger UI. This allows you to explore and test the library's functions through a web interface.
Visit our API documentation online at: https://rodert.github.io/go-commons
The online documentation is automatically deployed from the main branch and provides the most up-to-date API reference.
To start the API documentation server locally:
./run_apidocs.shThen open your browser and navigate to http://localhost:8080 to view the interactive API documentation.
To manually format all Go files:
make fmtpackage main
import (
"fmt"
"github.com/Rodert/go-commons/stringutils"
)
func main() {
// Basic string operations
fmt.Println(stringutils.IsBlank(" \t\n")) // true
fmt.Println(stringutils.Trim(" hello ")) // "hello"
fmt.Println(stringutils.TruncateWithSuffix("abcdef", 4, "..")) // "ab.."
fmt.Println(stringutils.PadLeft("42", 5, '0')) // "00042"
fmt.Println(stringutils.ContainsAny("gopher", "go", "java")) // true
// String transformations
fmt.Println(stringutils.Reverse("hello")) // "olleh"
fmt.Println(stringutils.SwapCase("Hello World")) // "hELLO wORLD"
fmt.Println(stringutils.PadCenter("hello", 9, '*')) // "**hello**"
}package main
import (
"fmt"
"github.com/Rodert/go-commons/systemutils/cpuutils"
"github.com/Rodert/go-commons/systemutils/memutils"
"github.com/Rodert/go-commons/systemutils/diskutils"
)
func main() {
// Get CPU information
cpuInfo, err := cpuutils.GetCPUInfo()
if err == nil {
fmt.Printf("CPU Cores: %d\n", cpuInfo.LogicalCores)
fmt.Printf("CPU Usage: %.2f%%\n", cpuInfo.UsagePercent)
fmt.Printf("Load Average: %.2f, %.2f, %.2f\n",
cpuInfo.LoadAvg[0], cpuInfo.LoadAvg[1], cpuInfo.LoadAvg[2])
}
// Get memory information
memInfo, err := memutils.GetMemInfo()
if err == nil {
fmt.Printf("Total Memory: %d bytes\n", memInfo.Total)
fmt.Printf("Available Memory: %d bytes\n", memInfo.Available)
fmt.Printf("Used Memory: %d bytes\n", memInfo.Used)
}
// Get disk information
diskInfo, err := diskutils.GetDiskInfo("/")
if err == nil {
fmt.Printf("Disk Path: %s\n", diskInfo.Path)
fmt.Printf("Total Space: %d bytes\n", diskInfo.Total)
fmt.Printf("Free Space: %d bytes\n", diskInfo.Free)
fmt.Printf("Used Space: %d bytes\n", diskInfo.Used)
fmt.Printf("Usage Ratio: %.2f%%\n", diskInfo.UsedRatio)
}
}- See
stringutils/stringutils_test.gofor a wide range of covered behaviors. - Check the
examples/directory for runnable samples.
This project includes a Makefile to simplify running tests and other development tasks:
# Run all tests
make test
# Run tests for a specific package
make test-pkg PKG=./stringutils
# Run tests with coverage report
make cover
# Run benchmarks
make bench
# Format code and run tests
make
# Show all available commands
make help- Prefer the standard library over third‑party dependencies
- Keep APIs small, clear, and well‑tested
- Enhance
systemutilspackages with more detailed metrics and monitoring capabilities - Add more examples under
examples/ - Improve cross-platform compatibility and testing
- Add more string manipulation utilities
- 2025-09-07: Initial project setup, basic README and LICENSE
- 2025-09-08:
- Added core string utilities in
stringutilspackage - Implemented system utilities for CPU, memory, and disk monitoring
- Added cross-platform support (Linux, macOS, Windows)
- Created examples and comprehensive documentation
- Added string transformation functions (
Reverse,SwapCase,PadCenter)
- Added core string utilities in
Issues and pull requests are welcome. Please keep code readable and add tests when introducing new functions.
