• Stars
    star
    3
  • Rank 3,855,748 (Top 79 %)
  • Language
    Go
  • License
    MIT License
  • Created over 5 years ago
  • Updated almost 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Ruby-ish Object#inspect tryouts for Golang!

Go Inspect

Small object inspection library inspired from Ruby’s Object#inspect method for learning purposes to my self :) Found Go’s reflect library to play with!

Install

$ go get -u github.com/vigo/go-inspect

Run the test:

$ go test -v .

Usage

It works (as far as I tested) with numerics, strings, arrays, maps and structs.

package main

import (
	"fmt"

	inspect "github.com/vigo/go-inspect"
)

// User represents basic user data
type User struct {
	FirstName string `json:"first_name"`
	LastName  string `json:"last_name"`
	Email     string `json:"email"`
}

// GetFullName returns user's fullname
func (u User) GetFullName() string {
	return fmt.Sprintf("%s %s", u.FirstName, u.LastName)
}

// SetEmail sets user's email with given input
func (u *User) SetEmail(email string) {
	u.Email = email
}

func main() {
	user1 := User{
		FirstName: "Uğur",
		LastName:  "Özyılmazel",
		Email:     "[email protected]",
	}
	user2 := &User{
		FirstName: "Ezel",
		LastName:  "Özyılmazel",
		Email:     "[email protected]",
	}

	fmt.Println(inspect.Element(&user1))
	fmt.Println(inspect.Element(user2))
}

Output:

Inspection of: [User] object

[*main.User..............] {Uğur Özyılmazel [email protected]}
# of Fields: 3

FirstName........... string.... Uğur.......................... json:"first_name".............
LastName............ string.... Özyılmazel.................... json:"last_name"..............
Email............... string.... [email protected].............. json:"email"..................

# of Methods: 2

GetFullName......... func(*main.User) string
SetEmail............ func(*main.User, string)

--------------------------------------------------------------------------------------------------------------------

Inspection of: [User] object

[*main.User..............] {Ezel Özyılmazel [email protected]}
# of Fields: 3

FirstName........... string.... Ezel.......................... json:"first_name".............
LastName............ string.... Özyılmazel.................... json:"last_name"..............
Email............... string.... [email protected].............. json:"email"..................

# of Methods: 2

GetFullName......... func(*main.User) string
SetEmail............ func(*main.User, string)

--------------------------------------------------------------------------------------------------------------------

Feel free to fix/improve anything you like to!

Contributer(s)


Contribute

All PR’s are welcome!

  1. fork (https://github.com/vigo/go-inspect/fork)
  2. Create your branch (git checkout -b my-features)
  3. commit yours (git commit -am 'added killer options')
  4. push your branch (git push origin my-features)
  5. Than create a new Pull Request!

License

This project is licensed under MIT


More Repositories

1

git-puf-noktalari

Günlük hayatta kullandığımız revizyon kontrol sistemi GIT ile ilgili küçük ipuçlarını anlatan yeni mini kitabım.
Ruby
425
star
2

kommit

Build your commit message without touching or editing your code!
Shell
204
star
3

ruby101-kitap

Türkçe Ruby kitabı
Ruby
196
star
4

dinozorus

1990'lı yıllara damgasını vuran efsane televizyon oyunu Dinozorus. Amiga 1200 - AGA
Assembly
131
star
5

turk-scene-tarihi

80'lerin ortasında başlayan, günümüz bilgisayar kültürünün neredeyse başlangıç noktası olan Türk SCENE/DEMOSCENE tarihçesi
86
star
6

lyk-2017

Linux Yaz Kampı 2017'de anlattığım konular.
41
star
7

django2-project-template

Django project/application starter for lazybones :)
Python
40
star
8

textmate-twitterbootstrap.tmbundle

TextMate bundle for Twitter's Bootstrap
HTML
33
star
9

statoo

`statoo` is a super simple http GET tool for checking site health
Go
32
star
10

awesome-c64

Commodore 64 related links such as C64 tools for Mac/Linux/PC, demoscene related stuff, coding tools, C64 utilities etc...
30
star
11

textmate-octopress.tmbundle

TextMate bundle for Octopress blog engine. http://octopress.org/
29
star
12

gh_issues

Manage GitHub issues from command-line (read only!)
Ruby
22
star
13

dotfiles-light

Just another but `lighter` version of BASH environment
Shell
18
star
14

dotfiles-universal

My old BASH dot-files... Try new one!
Shell
13
star
15

textmate2-python-fmt

Python FMT is a python linter/formatter/checker for TextMate.
Ruby
13
star
16

textmate2-gfm-preview

GitHub Flavored Markdown Preview for TextMate 2
CSS
12
star
17

django-project-template

Project starter for Django 1.11.4 ... Batteries included :)
Python
10
star
18

textmate-hosts.tmbundle

TextMate bundle for /etc/hosts file
9
star
19

dotfiles-fever

Elegant BASH environment for macOS, Ubuntu and Gentoo
Shell
8
star
20

textmate-window-manager

Window manager/arranger for oldskool TextMate (1.5)
Shell
7
star
21

apm-bash-completion

Bash completion for Atom Package Manager (apm)
Shell
6
star
22

stormssh-completion

Bash competion for `sshstorm` (https://github.com/emre/storm)
Shell
6
star
23

devpod

Official website of devPod
HTML
6
star
24

textmate2-ruff-linter

Ruff linter for TextMate2. Linter and auto fixer for python!
Ruby
5
star
25

ugur.ozyilmazel.com-v5

Kişisel websitem V4.0
HTML
5
star
26

lsvirtualenvs

Small commandline tool for `virtualenvwrapper`
Go
4
star
27

ghstars

Show GitHub stars count for user!
Go
4
star
28

git-init-githubrepo

Create git repository for GitHub style
Go
4
star
29

golang-notlarim

Golang geliştirme ile ilgili aldığım notlar
Ruby
4
star
30

git-tips

Git versiyon kontrol sistemi ile ilgili Türkçe dökümantasyon ve ipuçları
JavaScript
4
star
31

dox2008

2007-2008 yıllarında İstanbul Bilgi Üniversitesi, web departmanı için hazırladığım javascript ve html/css eğitimleri
JavaScript
4
star
32

textmate2-power-tools

Some useful TextMate2 snippets, commands etc...
Ruby
3
star
33

putio

Command-Line client for put.io platform (unofficial)
Go
3
star
34

textmate2-64tass-bundle

64tass Bundle for TextMate 2
2
star
35

sayisal_captcha

Çok basit şekilde iki basamaklı sayılardan random toplama ya da çarpma üreten bir sistem
Ruby
2
star
36

learning-stimulus-02

I'm learning stimulus, this is example 02
JavaScript
2
star
37

vigo

I'm a hustler baby!
2
star
38

textmate2-gomodifytags

TextMate2 implementation of Fatih’s gomodifytags
Shell
2
star
39

vigo.io

Personal website
HTML
2
star
40

els

Unix `ls` command alternative via Ruby :)
Ruby
2
star
41

pg16_django

3. Programlama Günleri / Karabük - Django ile tanışma
Python
2
star
42

ruby101-kitap-kod

Ruby101 kitabında geçen kod örnekleri
2
star
43

learning-stimulus-01

I'm learning stimulus, this is example 01
JavaScript
1
star
44

textmate2-bootstrap3

Bootstrap 3's helpers for TextMate2
1
star
45

stringutils-demo

A basic golang package for demo purpose only...
Go
1
star
46

uptimerobot_cmd

Command-line client for Uptimerobot service
Ruby
1
star
47

textmate1-twitter-bs3.tmbundle

Twitter Bootstrap 3 bundle for TextMate1 (yes the oldest TextMate)
1
star
48

try_git

1
star
49

homebrew-statoo

brew tap repo for `statoo`
Ruby
1
star
50

homebrew-git-init-githubrepo

brew tap for `git-init-githubrepo`
Ruby
1
star
51

vigo.github.com

My developer home page...
HTML
1
star
52

dji18njs

Modified and hardcore changed version of Django's i18n-javascript function. Can be usable as JavasScript Template engine. If you familiar with python's "format text" you will love this!
JavaScript
1
star
53

homebrew-lsvirtualenvs

brew tap for lsvirtualenvs
Ruby
1
star
54

homebrew-ghstars

Brew tap for ghstars cli
Ruby
1
star
55

amiga-ascii.tmbundle

Oldskool Amiga ascii/azki/nfo/diz support for TextMate with real Amiga fonts
1
star
56

my-custom-textmate1-bundle

Many snippets and my custom scratch-pad for TextMate1.
CSS
1
star
57

ugur.ozyilmazel.com

Kişisel web sitem
HTML
1
star
58

textmate-nanorc.tmbundle

.nanorc bundle for TextMate
Ruby
1
star