https://github.com/ramadani/types-go
Go custom data types
https://github.com/ramadani/types-go
data-types golang-package
Last synced: 6 months ago
JSON representation
Go custom data types
- Host: GitHub
- URL: https://github.com/ramadani/types-go
- Owner: ramadani
- License: mit
- Created: 2019-08-19T07:21:29.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2019-09-05T10:04:29.000Z (over 6 years ago)
- Last Synced: 2025-02-06T10:53:20.968Z (about 1 year ago)
- Topics: data-types, golang-package
- Language: Go
- Homepage:
- Size: 13.7 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# types-go
Go custom data type
## Installation
```bash
$ go get github.com/garavan/types-go
```
## Usage
Import types-go to your go project
```go
import types "github.com/garavan/types-go"
```
### Date and Null Date
```go
type User struct {
Name string `json:"name"`
Dob types.Date `json:"dob"`
DeletedDate types.NullDate `json:"deleted_date"`
}
```
**Marshalling json**
```go
dobTime, _ := time.Parse("2006-01-02", "1990-06-03")
eko := User{
Name: "Eko Syamsudin",
Dob: types.Date{Time: dobTime},
DeletedDate: types.NullDate{Time: time.Now(), Valid: true},
}
bytes, _ := json.Marshal(&eko)
// json:
// {"name":"Eko Syamsudin","dob":"1990-06-03" "deleted_date":"2019-08-19"}
```
if deleted date is null
```go
dobTime, _ := time.Parse("2006-01-02", "1990-06-03")
eko := User{
Name: "Eko Syamsudin",
Dob: types.Date{Time: dobTime},
DeletedDate: types.NullDate{},
}
bytes, _ := json.Marshal(&eko)
// json:
// {"name":"Eko Syamsudin","dob":"1990-06-03" "deleted_date":"null"}
```
**Unmarshalling json**
```go
dani := User{}
err := json.Unmarshal([]byte("{\"name\":\"Ramadani\",\"dob\":\"1992-07-25\"}"), &dani)
// dani.DeletedDate is equal NullDate{}
```
### Gender
```go
type User struct {
Name string `json:"name"`
Gender types.Gender `json:"gender"`
}
```
```go
eko := User{
Name: "Eko Syamsudin",
Gender: types.Male,
}
bytes, _ := json.Marshal(&eko)
log.Println(string(bytes))
// json:
// {"name":"Eko Syamsudin","gender":"M"}
```
### Null Gender
```go
type User struct {
Name string `json:"name"`
Gender types.NullGender `json:"gender"`
}
```
```go
eko := User{
Name: "Eko Syamsudin",
Gender: types.NullGender{},
}
bytes, _ := json.Marshal(&eko)
log.Println(string(bytes))
// json:
// {"name":"Eko Syamsudin","gender":"null"}
```
## Tests
```bash
go test
```