important
This is a contributors guide and NOT a user guide. Please visit these docs if you are using or evaluating SuperTokens.
Golang
- Use pointers when: - Need to pass by reference
- Need to make something optional
 
- When returning an object from an API or recipe function, and if the object has different status types, each status type should correspond to a nullable sub-object. For example, if the return type of a function is: - {status: "OK", name: string} | {status: "SOME_ERROR"}- This should be like the following in go: - type Response struct { OK *struct{ Name string }, SomeError *struct{}}- Then the consumer of the function can check if - response.OK != nilor- response.SomeError != nil
- When parsing JSON response from an API, one method is to first marshall it (convert it to string JSON) and then unmarshall it into an object. 
- Package names for defining types / models must be globally unique (based on short form of recipe name, for example - epmodelsfor email password models). This is so that importing them and using them across recipes should be easy.