Hacker News new | ask | show | jobs
by voidlogic 4721 days ago
Getters and setters that have no logic are pointless. In Go I would write:

    type Person struct {
        Sanity int
    }
    
    func NewPerson() *Person {
        return &Person{Sanity: 50}
    }
    
This is good enough 90% of the time (and faster), but if I was writing a library package and I wanted to care about protecting with some logic and care about my export signature:

    type Person interface {
    	Sanity()
    	SetSanity(val int)
    }
    
    type person struct {
    	sanity int
    }
    
    func NewPerson() Person {
        return &person{sanity: 50}
    }
    
    func (p *person) Sanity() {
    	return p.sanity
    }
    
    func (p *person) SetSanity(val int) {
    	if val > SOME_FOO1 && val < SOME_FOO2 {
    		p.sanity = val	
    	}
    }