Skip to content
/ ptr Public

ptr provides small helper functions for working with pointers of basic types

License

Notifications You must be signed in to change notification settings

kevinpfab/ptr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ptr - work with pointers to basic Go types inline

Travis CI GoDoc Go Report Card

go get github.com/kevinpfab/ptr

In Go, to get a pointer to a basic literal you need to first set the literal to a variable.

var namePtr *string
name := "Octocat"
namePtr = &name

The ptr package let's you do this inline, which is particularly useful when working with pointer heavy structs.

type Employee struct {
    FirstName *string
    LastName *string
    HourlyRate *float32
}

github := &Employee{
    FirstName: ptr.String("Octo"),
    LastName: ptr.String("Cat"),
    HourlyRate: ptr.Float32(15.00),
}

All basic types and time.Time are supported. Other commonly pointered types in the standard library would be welcome additions.

An extra helper S(v interface{}) string is defined to safely get the string representation of the underlying value of a pointer.

var namePtr *string
fmt.Println(ptr.S(namePtr)) // Writing fmt.Println(*namePtr) would crash the program.
// Output: <nil>

name := "Octocat"
namePtr = &name
fmt.Println(ptr.S(namePtr))
// Output: Octocat

Package ptr is MIT licensed.

About

ptr provides small helper functions for working with pointers of basic types

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages