Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I found it more convenient to keep the field unnamed when using mutex in a struct. So in the example that would be

type Backend struct {

  URL          *url.URL

  Alive        bool

  sync.RWMutex

  ReverseProxy *httputil.ReverseProxy

}



The problem with that is that the methods for `sync.RWMutex` spill into `Backend`.


That isn't a problem—in fact, that's the entire point of arberavdullahu's suggestion.


Still seems like a problem to me. It breaks encapsulation.

The mutex is only used inside of SetAlive() and isAlive(), they're the only things this need to handle locking and unlocking. You don't want anything external to that calling the methods on RWMutex.


Oh of course, if you're not using it then don't expose it.

I haven't read the code so I can't verify if that's the case here, but I read OPs post as being worried about method clobbering (which is really a non-issue, if the popularity of embedding mutexes shows us anything).




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: