Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/stirby/mapgen

Generate thread-safe, type-safe Go maps
https://github.com/stirby/mapgen

code-generation concurrent-map golang map mapgen threadsafe

Last synced: about 9 hours ago
JSON representation

Generate thread-safe, type-safe Go maps

Awesome Lists containing this project

README

        

> **Note**
> As of Go 1.18, just use generics.

---

# mapgen

A tool which generates thread safe maps for Go.

Features:

- Supports any key/value pair supported by Go's native maps
- Allows complex operations via `Lock()` and `Unlock()`
- Generated code conforms to `golint` and `gofmt`
- Allows custom types
- Sensible default file name and map name
- Optionally generates using `sync.RWMutex`

Generated example located in `examples/`

## Install

`go get -u github.com/s-kirby/mapgen/cmd/mapgen`

## Usage

Create string -> int map:

```bash
$ mapgen string/int
Wrote string_int_map_gen.go
```

Create string -> *bytes.Buffer map using a read-write mutex:

```bash
$ mapgen --rwmu string/*bytes.Buffer
Wrote string_buffer_map_gen.go
```

Help:

```
usage: mapgen [] []

Flags:
--help Show context-sensitive help (also try --help-long and --help-man).
-p, --pkg="." package name
-v, --verbose highly descriptive output
-f, --file=FILE output file name
--rwmu Use RWMutex

Args:
Key and value types, e.g `string/int`
[] name of generated type
```