best practice 같은데서 제가 직접 타입이랑 인터페이스 구현하는건 이해가되는데

막 기본패키지 io.Writer나 io.Reader, Marshaler 이런애들 구현해서 쓰는게 이해가 안되요...


type Marshaler interface {

    MarshalJSON() ([]byte, error)

}


이게 기본패키지 마샬러 인터페이스인데


제가 만든 타입을 Marshaler 인터페이스로 만들려면

제가 직접 제 타입에 맞게 MarshalJSON 함수를 만들고 로직을 구현해야 하는건가요?


가끔 제가 MarshalJSON 구현하면 기본 패키지에서 인자로 Marshaler 인터페이스를 받는 함수나 메소드가패닉뜰때가 있더라구요.. 

흑흑 왜이러징