Skip to content

Instantly share code, notes, and snippets.

@drodil
Last active March 8, 2019 07:47
Show Gist options
  • Save drodil/05d35d55a67af0a23a474a33e6aa2bc0 to your computer and use it in GitHub Desktop.
Save drodil/05d35d55a67af0a23a474a33e6aa2bc0 to your computer and use it in GitHub Desktop.
package main
import (
"fmt"
"os"
"errors"
)
func NewNote(field string) (Note, error) {
inst := Note{}
inst.PublicField = 2
return inst, inst.SetPrivateField(field)
}
type Note struct {
PublicField int
privateField string
}
func (n *Note) GetPrivateField() (string) {
return n.privateField
}
func (n *Note) SetPrivateField(field string) (error) {
err := n.ensurePrivateFieldLength(field)
if err != nil {
return err
}
n.privateField = field
return nil
}
func (n *Note) ensurePrivateFieldLength(field string) (error) {
if len(field) == 0 {
return errors.New("Empty private field given!")
}
return nil
}
func main() {
fmt.Printf("You have entered %v arguments:\n", len(os.Args))
for i := 0; i < len(os.Args); i++ {
fmt.Println(os.Args[i])
}
note, err := NewNote("my note")
if err != nil {
os.Exit(1)
}
fmt.Println(note.PublicField)
fmt.Println(note.GetPrivateField())
var notepointer *Note
notepointer = &note
fmt.Println(notepointer.PublicField)
fmt.Println(notepointer.GetPrivateField())
os.Exit(0)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment