In your case, I would just call them RoleChecker and RoleAssumer , the "combined" one RoleCheckerAssumer . Or if you go with one interface, it can be RoleHelper or RoleChecker .
ServerSession also ServerSession or even just Session (especially if the client session does not exist). ServerSessioner On the other hand, badly, Session not a verb, not an interface method.
There have been many reports of agreements.
Effective Transition: Interface Names:
By convention, the interfaces of one method are called the name of the method plus the suffix -er or a similar modification to create a noun agent: Reader , Writer , Formatter , CloseNotifier , etc.
There are many such names, and they are productive for their honor and the names of the functions that they capture. Read , Write , Close , Flush , String , etc. have canonical signatures and meanings. To avoid confusion, do not give your method one of these names if it does not have the same signature and value. Conversely, if your type implements a method with the same value as the method of a known type, give it the same name and signature; call the string converter method String not ToString .
Interface Types @ What is called? - Negotiations at golang.org
Interfaces that specify only one method are usually the name of this function with the addition of er.
type Reader interface { Read(p []byte) (n int, err error) }
Sometimes the result is incorrect in English, but we still do:
type Execer interface { Exec(query string, args []Value) (Result, error) }
Sometimes we use English to make it more pleasant:
type ByteReader interface { ReadByte() (c byte, err error) }
When an interface includes several methods, select a name that accurately describes its purpose (examples: net.Conn, http.ResponseWriter, io.ReadWriter).
For recipient names, do not use this or self or similar. Instead of this:
Receivers @ What is called? - Negotiations at golang.org
Receivers are a special argument.
By convention, they are one or two characters that reflect the type of receiver, because they usually appear on almost every line:
func (b *Buffer) Read(p []byte) (n int, err error) func (sh serverHandler) ServeHTTP(rw ResponseWriter, req *Request) func (r Rectangle) Size() Point
Recipient names must be consistent between type methods. (Do not use r in one method and rdr in another.)
Go Code Review Comments: Recipient Names:
The name of the method receiver should be a reflection of its identity; often one or two letter abbreviations of its type are sufficient (for example, "c" or "cl" for "Client"). Do not use common names such as "me", "this" or "self", identifiers typical of object-oriented languages, which pay more attention to methods rather than functions. The name should not be as descriptive as the name of the argument of the method, since its role is obvious and does not serve any documentary purpose. It can be very short, as it will appear on almost every line of each type method; acquaintance allows brevity. Be also consistent: if you call the receiver "c" in one way, do not call it "cl" in another.