SYMBOL INDEX (3579 symbols across 591 files) FILE: ch01/01_defining_depenency_injection/01_interface.go type Saver (line 9) | type Saver interface function SavePerson (line 14) | func SavePerson(person *Person, saver Saver) error { type Person (line 33) | type Person struct method validate (line 39) | func (p *Person) validate() error { method encode (line 52) | func (p *Person) encode() ([]byte, error) { FILE: ch01/01_defining_depenency_injection/02_function_literal.go function LoadPerson (line 10) | func LoadPerson(ID int, decodePerson func(data []byte) *Person) (*Person... function loadPerson (line 27) | func loadPerson(ID int) ([]byte, error) { FILE: ch01/01_defining_depenency_injection/03_test_without_nfs_test.go function TestSavePerson_happyPath (line 10) | func TestSavePerson_happyPath(t *testing.T) { type mockSaver (line 30) | type mockSaver struct method Save (line 35) | func (m *mockSaver) Save(data []byte) error { FILE: ch01/01_defining_depenency_injection/04_fail_test_without_nfs_test.go function TestSavePerson_nfsAlwaysFails (line 11) | func TestSavePerson_nfsAlwaysFails(t *testing.T) { FILE: ch01/02_code_smells/01_code_bloat/01_switch_type.go function AppendValue (line 7) | func AppendValue(buffer []byte, in interface{}) []byte { FILE: ch01/02_code_smells/02_resistance_to_change/01_shotgun_surgey.go type Renderer (line 9) | type Renderer struct method render (line 11) | func (r Renderer) render(name, phone string, output io.Writer) { type Validator (line 16) | type Validator struct method validate (line 18) | func (v Validator) validate(name, phone string) error { type Saver (line 24) | type Saver struct method Save (line 26) | func (s *Saver) Save(db *sql.DB, name, phone string) { FILE: ch01/02_code_smells/03_wasted_effort/01_excessive_comments.go function outputOrderedPeopleA (line 4) | func outputOrderedPeopleA(in []*Person) { function outputOrderedPeopleB (line 17) | func outputOrderedPeopleB(in []*Person) { function outputPeople (line 22) | func outputPeople(in []*Person) { function sortPeople (line 27) | func sortPeople(in []*Person) { type Person (line 32) | type Person struct FILE: ch01/02_code_smells/03_wasted_effort/02_complicated_go.go function d (line 9) | func d(r, v float64, i *image.RGBA, c color.Color) { FILE: ch01/02_code_smells/04_tight_coupling/01_circular_dependencies/config/config.go type Config (line 12) | type Config struct function Load (line 22) | func Load(filename string) (*Config, error) { FILE: ch01/02_code_smells/04_tight_coupling/01_circular_dependencies/payment/currency.go type Currency (line 12) | type Currency type Processor (line 15) | type Processor struct method Pay (line 20) | func (p *Processor) Pay(amount float64) error { FILE: ch01/02_code_smells/04_tight_coupling/02_object_orgy.go type PageLoader (line 9) | type PageLoader struct method LoadPage (line 12) | func (o *PageLoader) LoadPage(url string) ([]byte, error) { type Fetcher (line 44) | type Fetcher struct function newFetcher (line 49) | func newFetcher() *Fetcher { type Cache (line 53) | type Cache struct method Get (line 57) | func (c *Cache) Get(key string) ([]byte, error) { method Set (line 62) | func (c *Cache) Set(key string, data []byte) error { FILE: ch01/02_code_smells/04_tight_coupling/03_feature_envy.go type searchRequest (line 8) | type searchRequest struct method validate (line 14) | func (request searchRequest) validate() error { type searchResults (line 28) | type searchResults struct function doSearchWithEnvy (line 32) | func doSearchWithEnvy(request searchRequest) ([]searchResults, error) { function doSearchWithoutEnvy (line 47) | func doSearchWithoutEnvy(request searchRequest) ([]searchResults, error) { function performSearch (line 56) | func performSearch(request searchRequest) ([]searchResults, error) { FILE: ch02/01_single_responsibility_principle/01_responsibility_vs_change.go type CalculatorV1 (line 9) | type CalculatorV1 struct method Calculate (line 15) | func (c *CalculatorV1) Calculate(path string) error { method Output (line 21) | func (c *CalculatorV1) Output(writer io.Writer) { FILE: ch02/01_single_responsibility_principle/02_responsibility_vs_change.go type CalculatorV2 (line 9) | type CalculatorV2 struct method Calculate (line 15) | func (c *CalculatorV2) Calculate(path string) error { method Output (line 21) | func (c CalculatorV2) Output(writer io.Writer) { method OutputCSV (line 28) | func (c CalculatorV2) OutputCSV(writer io.Writer) { FILE: ch02/01_single_responsibility_principle/03_responsibility_vs_change.go type CalculatorV3 (line 9) | type CalculatorV3 struct method Calculate (line 15) | func (c *CalculatorV3) Calculate(path string) error { method getData (line 20) | func (c *CalculatorV3) getData() map[string]float64 { type Printer (line 25) | type Printer interface type DefaultPrinter (line 29) | type DefaultPrinter struct method Output (line 34) | func (d *DefaultPrinter) Output(data map[string]float64) { type CSVPrinter (line 40) | type CSVPrinter struct method Output (line 45) | func (d *CSVPrinter) Output(data map[string]float64) { FILE: ch02/01_single_responsibility_principle/04_long_method.go function loadUserHandlerLong (line 10) | func loadUserHandlerLong(resp http.ResponseWriter, req *http.Request) { type Person (line 41) | type Person struct FILE: ch02/01_single_responsibility_principle/04_long_method_test.go function TestLoadUserHandler (line 14) | func TestLoadUserHandler(t *testing.T) { function TestMain (line 32) | func TestMain(m *testing.M) { FILE: ch02/01_single_responsibility_principle/05_srp_method.go function loadUserHandlerSRP (line 9) | func loadUserHandlerSRP(resp http.ResponseWriter, req *http.Request) { function extractIDFromRequest (line 25) | func extractIDFromRequest(req *http.Request) (int64, error) { function loadPersonByID (line 33) | func loadPersonByID(userID int64) (*Person, error) { function outputPerson (line 44) | func outputPerson(resp http.ResponseWriter, person *Person) { FILE: ch02/02_open_closed_principle/01_open_closed_failure.go function BuildOutputOCPFail (line 8) | func BuildOutputOCPFail(response http.ResponseWriter, format string, per... function outputCSV (line 29) | func outputCSV(writer io.Writer, person Person) error { function outputJSON (line 35) | func outputJSON(writer io.Writer, person Person) error { type Person (line 41) | type Person struct FILE: ch02/02_open_closed_principle/02_open_closed_success.go function BuildOutputOCPSuccess (line 8) | func BuildOutputOCPSuccess(response http.ResponseWriter, formatter Perso... type PersonFormatter (line 19) | type PersonFormatter interface type CSVPersonFormatter (line 24) | type CSVPersonFormatter struct method Format (line 27) | func (c *CSVPersonFormatter) Format(writer io.Writer, person Person) e... type JSONPersonFormatter (line 33) | type JSONPersonFormatter struct method Format (line 36) | func (j *JSONPersonFormatter) Format(writer io.Writer, person Person) ... FILE: ch02/02_open_closed_principle/03_shotgun_surgery.go function GetUserHandlerV1 (line 8) | func GetUserHandlerV1(resp http.ResponseWriter, req *http.Request) { function DeleteUserHandlerV1 (line 25) | func DeleteUserHandlerV1(resp http.ResponseWriter, req *http.Request) { function loadUser (line 41) | func loadUser(userID int64) interface{} { function deleteUser (line 46) | func deleteUser(userID int64) { function outputUser (line 50) | func outputUser(resp http.ResponseWriter, user interface{}) { FILE: ch02/02_open_closed_principle/04_after_shotgun_surgery.go function GetUserHandlerV2 (line 10) | func GetUserHandlerV2(resp http.ResponseWriter, req *http.Request) { function DeleteUserHandlerV2 (line 27) | func DeleteUserHandlerV2(resp http.ResponseWriter, req *http.Request) { function extractUserID (line 43) | func extractUserID(values url.Values) (int64, error) { FILE: ch02/02_open_closed_principle/05_composition.go type rowConverter (line 7) | type rowConverter struct method populate (line 11) | func (d *rowConverter) populate(in *Person, scan func(dest ...interfac... type LoadPerson (line 15) | type LoadPerson struct method ByID (line 20) | func (loader *LoadPerson) ByID(id int) (Person, error) { method loadFromDB (line 30) | func (loader *LoadPerson) loadFromDB(id int) *sql.Row { method All (line 40) | func (loader *LoadPerson) All() ([]Person, error) { method loadAllFromDB (line 58) | func (loader *LoadPerson) loadAllFromDB() *sql.Rows { type LoadAll (line 35) | type LoadAll struct FILE: ch02/02_open_closed_principle/06_handler_struct.go type healthCheckLong (line 8) | type healthCheckLong struct method ServeHTTP (line 11) | func (h *healthCheckLong) ServeHTTP(resp http.ResponseWriter, _ *http.... function healthCheckLongUsage (line 15) | func healthCheckLongUsage() { FILE: ch02/02_open_closed_principle/07_handler_func.go function healthCheckShort (line 8) | func healthCheckShort(resp http.ResponseWriter, _ *http.Request) { function healthCheckShortUsage (line 12) | func healthCheckShortUsage() { FILE: ch02/03_liskov_substitution_principle/01_violation/example.go function Go (line 3) | func Go(vehicle actions) { type actions (line 13) | type actions interface type Vehicle (line 18) | type Vehicle struct method drive (line 21) | func (v Vehicle) drive() { method startEngine (line 25) | func (v Vehicle) startEngine() { method stopEngine (line 29) | func (v Vehicle) stopEngine() { type Car (line 33) | type Car struct type Sled (line 37) | type Sled struct method startEngine (line 41) | func (s Sled) startEngine() { method stopEngine (line 45) | func (s Sled) stopEngine() { method pushStart (line 49) | func (s Sled) pushStart() { FILE: ch02/03_liskov_substitution_principle/02_fixed/example.go function Go (line 3) | func Go(vehicle actions) { type actions (line 15) | type actions interface type poweredActions (line 19) | type poweredActions interface type unpoweredActions (line 25) | type unpoweredActions interface type Vehicle (line 30) | type Vehicle struct method drive (line 33) | func (v Vehicle) drive() { type PoweredVehicle (line 37) | type PoweredVehicle struct method startEngine (line 41) | func (v PoweredVehicle) startEngine() { type Car (line 45) | type Car struct type Sled (line 49) | type Sled struct method pushStart (line 53) | func (s Sled) pushStart() { FILE: ch02/03_liskov_substitution_principle/03_fixed/example.go function Go (line 3) | func Go(vehicle actions) { type actions (line 8) | type actions interface type Car (line 13) | type Car struct method start (line 17) | func (c Car) start() { method drive (line 21) | func (c Car) drive() { type poweredVehicle (line 25) | type poweredVehicle struct method startEngine (line 28) | func (p poweredVehicle) startEngine() { type Sled (line 32) | type Sled struct method start (line 35) | func (s Sled) start() { method drive (line 39) | func (s Sled) drive() { FILE: ch02/03_liskov_substitution_principle/04_behaviour.go type Collection (line 3) | type Collection interface type CollectionImpl (line 8) | type CollectionImpl struct method Add (line 12) | func (c *CollectionImpl) Add(item interface{}) { method Get (line 16) | func (c *CollectionImpl) Get(index int) interface{} { type ReadOnlyCollection (line 20) | type ReadOnlyCollection struct method Add (line 24) | func (ro *ReadOnlyCollection) Add(item interface{}) { FILE: ch02/03_liskov_substitution_principle/05_behaviour_fixed.go type ImmutableCollection (line 3) | type ImmutableCollection interface type MutableCollection (line 7) | type MutableCollection interface type ReadOnlyCollectionV2 (line 12) | type ReadOnlyCollectionV2 struct method Get (line 16) | func (ro *ReadOnlyCollectionV2) Get(index int) interface{} { type CollectionImplV2 (line 20) | type CollectionImplV2 struct method Add (line 24) | func (c *CollectionImplV2) Add(item interface{}) { FILE: ch02/04_interface_segregation_principle/01_fat_interface.go type Item (line 7) | type Item struct type FatDbInterface (line 12) | type FatDbInterface interface type Cache (line 35) | type Cache struct method Get (line 39) | func (c *Cache) Get(key string) interface{} { method Set (line 49) | func (c *Cache) Set(key string, value interface{}) { FILE: ch02/04_interface_segregation_principle/02_thin_interface.go type myDB (line 3) | type myDB interface type CacheV2 (line 8) | type CacheV2 struct method Get (line 12) | func (c *CacheV2) Get(key string) interface{} { method Set (line 22) | func (c *CacheV2) Set(key string, value interface{}) { FILE: ch02/04_interface_segregation_principle/03_repeated_inputs.go function Encrypt (line 8) | func Encrypt(ctx context.Context, data []byte) ([]byte, error) { function performEncryption (line 41) | func performEncryption(key []byte, data []byte) []byte { FILE: ch02/04_interface_segregation_principle/04_repeated_inputs.go type Value (line 7) | type Value interface type Monitor (line 11) | type Monitor interface function EncryptV2 (line 15) | func EncryptV2(keyValue Value, monitor Monitor, data []byte) ([]byte, er... FILE: ch02/04_interface_segregation_principle/05_repeated_inputs.go function UseEncryptV2 (line 7) | func UseEncryptV2() { FILE: ch02/04_interface_segregation_principle/06_implicit_interfaces.go type Talker (line 7) | type Talker interface type Dog (line 11) | type Dog struct method SayHello (line 14) | func (d Dog) SayHello() string { function Speak (line 18) | func Speak() { FILE: ch03/01_optimizing_for_humans/01_not_so_simple.go function NotSoSimple (line 9) | func NotSoSimple(ID int64, name string, age int, registered bool) string { FILE: ch03/01_optimizing_for_humans/02_start_simple.go function Simpler (line 8) | func Simpler(ID int64, name string, age int, registered bool) string { FILE: ch03/01_optimizing_for_humans/03_too_abstract.go type myGetter (line 8) | type myGetter interface function TooAbstract (line 12) | func TooAbstract(getter myGetter, url string) ([]byte, error) { FILE: ch03/01_optimizing_for_humans/04_common_concept.go function CommonConcept (line 8) | func CommonConcept(url string) ([]byte, error) { FILE: ch03/01_optimizing_for_humans/05_boolean_param.go type Pet (line 7) | type Pet struct function NewPet (line 13) | func NewPet(name string, isDog bool) Pet { function CreatePetsV1 (line 21) | func CreatePetsV1() { FILE: ch03/01_optimizing_for_humans/06_hidden_boolean.go constant isDog (line 4) | isDog = true constant isCat (line 5) | isCat = false function NewDog (line 8) | func NewDog(name string) Pet { function NewCat (line 12) | func NewCat(name string) Pet { function CreatePetsV2 (line 16) | func CreatePetsV2() { FILE: ch03/01_optimizing_for_humans/07_wide_formatter.go type WideFormatter (line 3) | type WideFormatter interface FILE: ch03/01_optimizing_for_humans/08_thin_formatters.go type ThinFormatter (line 3) | type ThinFormatter interface type CSVFormatter (line 7) | type CSVFormatter struct method Format (line 9) | func (f CSVFormatter) Format(pets []Pet) ([]byte, error) { type GOBFormatter (line 14) | type GOBFormatter struct method Format (line 16) | func (f GOBFormatter) Format(pets []Pet) ([]byte, error) { type JSONFormatter (line 21) | type JSONFormatter struct method Format (line 23) | func (f JSONFormatter) Format(pets []Pet) ([]byte, error) { FILE: ch03/01_optimizing_for_humans/09_extra_config.go function PetFetcher (line 6) | func PetFetcher(search string, limit int, offset int, sortBy string, sor... function PetFetcherTypicalUsage (line 10) | func PetFetcherTypicalUsage() { FILE: ch03/02_unit_tests/01_loader.go type Loader (line 13) | type Loader interface function TestLoadAndPrint_happyPath (line 17) | func TestLoadAndPrint_happyPath(t *testing.T) { function TestLoadAndPrint_notFound (line 23) | func TestLoadAndPrint_notFound(t *testing.T) { function TestLoadAndPrint_error (line 29) | func TestLoadAndPrint_error(t *testing.T) { function LoadAndPrint (line 35) | func LoadAndPrint(loader Loader, ID int, dest io.Writer) { type happyPathLoader (line 51) | type happyPathLoader struct method Load (line 54) | func (l *happyPathLoader) Load(ID int) (*Pet, error) { type missingLoader (line 59) | type missingLoader struct method Load (line 62) | func (l *missingLoader) Load(ID int) (*Pet, error) { type errorLoader (line 67) | type errorLoader struct method Load (line 70) | func (l *errorLoader) Load(ID int) (*Pet, error) { FILE: ch03/02_unit_tests/02_language_feature.go type Pet (line 9) | type Pet struct function NewPet (line 13) | func NewPet(name string) *Pet { function TestLanguageFeatures (line 19) | func TestLanguageFeatures(t *testing.T) { FILE: ch03/02_unit_tests/03_simple_test.go function concat (line 9) | func concat(a, b string) string { function TestTooSimple (line 13) | func TestTooSimple(t *testing.T) { FILE: ch03/02_unit_tests/04_test_from_api.go type PetSaver (line 7) | type PetSaver struct method Save (line 10) | func (p PetSaver) Save(pet Pet) (int, error) { method validate (line 25) | func (p PetSaver) validate(pet Pet) error { method save (line 30) | func (p PetSaver) save(pet Pet) (sql.Result, error) { method extractID (line 35) | func (p PetSaver) extractID(result sql.Result) (int, error) { FILE: ch03/02_unit_tests/05_repeated_code.go function Round (line 10) | func Round(in float64) int { function TestRound_down (line 14) | func TestRound_down(t *testing.T) { function TestRound_up (line 22) | func TestRound_up(t *testing.T) { function TestRound_noChange (line 30) | func TestRound_noChange(t *testing.T) { FILE: ch03/02_unit_tests/06_tdt.go function TestRound (line 9) | func TestRound(t *testing.T) { FILE: ch03/02_unit_tests/07_person_loader.go type Person (line 9) | type Person struct type PersonLoader (line 14) | type PersonLoader interface function LoadPersonName (line 18) | func LoadPersonName(loader PersonLoader, ID int) (string, error) { FILE: ch03/02_unit_tests/08_stub.go type PersonLoaderStub (line 4) | type PersonLoaderStub struct method Load (line 9) | func (p *PersonLoaderStub) Load(ID int) (*Person, error) { FILE: ch03/02_unit_tests/09_stub_tdt.go function TestLoadPersonNameStubs (line 10) | func TestLoadPersonNameStubs(t *testing.T) { FILE: ch03/02_unit_tests/10_mocks.go function TestLoadPersonName (line 11) | func TestLoadPersonName(t *testing.T) { type PersonLoaderMock (line 66) | type PersonLoaderMock struct method Load (line 70) | func (p *PersonLoaderMock) Load(ID int) (*Person, error) { FILE: ch03/03_test_induced_damage/01_io_closer.go function WriteAndClose (line 7) | func WriteAndClose(destination io.WriteCloser, contents string) error { FILE: ch03/03_test_induced_damage/02_json.go function PrintAsJSON (line 8) | func PrintAsJSON(destination io.Writer, plant Plant) error { type Plant (line 18) | type Plant struct FILE: ch03/fake.go function init (line 3) | func init() { FILE: ch04/01_welcome/01_bad_names.go type HouseV1 (line 3) | type HouseV1 struct FILE: ch04/01_welcome/02_improved_names.go type HouseV2 (line 3) | type HouseV2 struct FILE: ch04/01_welcome/03_long_method.go function longMethod (line 10) | func longMethod(resp http.ResponseWriter, req *http.Request) { type Person (line 41) | type Person struct FILE: ch04/01_welcome/04_long_method_test.go function TestLongMethod_happyPath (line 15) | func TestLongMethod_happyPath(t *testing.T) { FILE: ch04/01_welcome/05_short_methods.go function shortMethods (line 9) | func shortMethods(resp http.ResponseWriter, req *http.Request) { function extractUserID (line 25) | func extractUserID(req *http.Request) (int64, error) { function loadPerson (line 34) | func loadPerson(userID int64) (*Person, error) { function outputPerson (line 45) | func outputPerson(resp http.ResponseWriter, person *Person) { FILE: ch04/03_known_issues/01_data_and_rest/get_example.go method writeJSON (line 13) | func (h *GetHandler) writeJSON(writer io.Writer, person *data.Person) er... FILE: ch04/03_known_issues/02_config_coupling/config.go type Config (line 7) | type Config struct FILE: ch04/03_known_issues/02_config_coupling/currency/currency.go type Currency (line 9) | type Currency method UnmarshalJSON (line 12) | func (c *Currency) UnmarshalJSON(in []byte) error { constant AUD (line 30) | AUD = Currency("AUD") constant CNY (line 31) | CNY = Currency("CNY") constant EUR (line 32) | EUR = Currency("EUR") constant USD (line 33) | USD = Currency("USD") FILE: ch04/acme/internal/config/config.go constant DefaultEnvVar (line 12) | DefaultEnvVar = "ACME_CONFIG" type Config (line 18) | type Config struct function init (line 36) | func init() { function load (line 46) | func load(filename string) error { FILE: ch04/acme/internal/config/config_test.go function TestLoad (line 10) | func TestLoad(t *testing.T) { FILE: ch04/acme/internal/logging/logging.go type LoggerStdOut (line 11) | type LoggerStdOut struct method Debug (line 14) | func (l LoggerStdOut) Debug(message string, args ...interface{}) { method Info (line 19) | func (l LoggerStdOut) Info(message string, args ...interface{}) { method Warn (line 24) | func (l LoggerStdOut) Warn(message string, args ...interface{}) { method Error (line 29) | func (l LoggerStdOut) Error(message string, args ...interface{}) { FILE: ch04/acme/internal/modules/data/data.go constant defaultPersonID (line 15) | defaultPersonID = 0 function getDB (line 25) | func getDB() (*sql.DB, error) { type Person (line 43) | type Person struct function Save (line 58) | func Save(in *Person) (int, error) { function LoadAll (line 85) | func LoadAll() ([]*Person, error) { function Load (line 126) | func Load(ID int) (*Person, error) { type scanner (line 152) | type scanner function populatePerson (line 155) | func populatePerson(scanner scanner) (*Person, error) { FILE: ch04/acme/internal/modules/data/data_test.go function TestData_happyPath (line 10) | func TestData_happyPath(t *testing.T) { FILE: ch04/acme/internal/modules/exchange/converter.go constant urlFormat (line 16) | urlFormat = "%s/api/historical?access_key=%s&date=2018-06-20¤cies=%s" constant defaultPrice (line 19) | defaultPrice = 0.0 type Converter (line 24) | type Converter struct method Do (line 27) | func (c *Converter) Do(basePrice float64, currency string) (float64, e... method loadRateFromServer (line 45) | func (c *Converter) loadRateFromServer(currency string) (*http.Respons... method extractRate (line 68) | func (c *Converter) extractRate(response *http.Response, currency stri... method extractResponse (line 91) | func (c *Converter) extractResponse(response *http.Response) (*apiResp... type apiResponseFormat (line 110) | type apiResponseFormat struct FILE: ch04/acme/internal/modules/get/get.go type Getter (line 16) | type Getter struct method Do (line 20) | func (g *Getter) Do(ID int) (*data.Person, error) { FILE: ch04/acme/internal/modules/get/go_test.go function TestGetter_Do (line 10) | func TestGetter_Do(t *testing.T) { FILE: ch04/acme/internal/modules/list/list.go type Lister (line 16) | type Lister struct method Do (line 20) | func (l *Lister) Do() ([]*data.Person, error) { method load (line 36) | func (l *Lister) load() ([]*data.Person, error) { FILE: ch04/acme/internal/modules/list/list_test.go function TestLister_Do (line 10) | func TestLister_Do(t *testing.T) { FILE: ch04/acme/internal/modules/register/register.go constant defaultPersonID (line 14) | defaultPersonID = 0 type Registerer (line 43) | type Registerer struct method Do (line 47) | func (r *Registerer) Do(in *data.Person) (int, error) { method validateInput (line 72) | func (r *Registerer) validateInput(in *data.Person) error { method getPrice (line 92) | func (r *Registerer) getPrice(currency string) (float64, error) { method save (line 104) | func (r *Registerer) save(in *data.Person, price float64) (int, error) { FILE: ch04/acme/internal/modules/register/register_test.go function TestRegisterer_Do (line 11) | func TestRegisterer_Do(t *testing.T) { FILE: ch04/acme/internal/rest/common_test.go function getOpenPort (line 8) | func getOpenPort() (string, error) { function startServer (line 20) | func startServer(ctx context.Context) (string, error) { FILE: ch04/acme/internal/rest/get.go constant defaultPersonID (line 19) | defaultPersonID = 0 type GetHandler (line 26) | type GetHandler struct method ServeHTTP (line 30) | func (h *GetHandler) ServeHTTP(response http.ResponseWriter, request *... method extractID (line 57) | func (h *GetHandler) extractID(request *http.Request) (int, error) { method writeJSON (line 81) | func (h *GetHandler) writeJSON(writer io.Writer, person *data.Person) ... type getResponseFormat (line 95) | type getResponseFormat struct FILE: ch04/acme/internal/rest/get_test.go function TestGetHandler_ServeHTTP (line 14) | func TestGetHandler_ServeHTTP(t *testing.T) { FILE: ch04/acme/internal/rest/list.go type ListHandler (line 14) | type ListHandler struct method ServeHTTP (line 18) | func (h *ListHandler) ServeHTTP(response http.ResponseWriter, request ... method writeJSON (line 37) | func (h *ListHandler) writeJSON(writer io.Writer, people []*data.Perso... type listResponseFormat (line 54) | type listResponseFormat struct type listResponseItemFormat (line 58) | type listResponseItemFormat struct FILE: ch04/acme/internal/rest/list_test.go function TestListHandler_ServeHTTP (line 14) | func TestListHandler_ServeHTTP(t *testing.T) { FILE: ch04/acme/internal/rest/not_found.go function notFoundHandler (line 7) | func notFoundHandler(response http.ResponseWriter, _ *http.Request) { FILE: ch04/acme/internal/rest/not_found_test.go function TestNotFoundHandler_ServeHTTP (line 12) | func TestNotFoundHandler_ServeHTTP(t *testing.T) { FILE: ch04/acme/internal/rest/register.go type RegisterHandler (line 15) | type RegisterHandler struct method ServeHTTP (line 19) | func (h *RegisterHandler) ServeHTTP(response http.ResponseWriter, requ... method extractPayload (line 42) | func (h *RegisterHandler) extractPayload(request *http.Request) (*regi... method register (line 55) | func (h *RegisterHandler) register(requestPayload *registerRequest) (i... type registerRequest (line 67) | type registerRequest struct FILE: ch04/acme/internal/rest/register_test.go function TestRegisterHandler_ServeHTTP (line 16) | func TestRegisterHandler_ServeHTTP(t *testing.T) { function buildValidRequest (line 40) | func buildValidRequest() io.Reader { FILE: ch04/acme/internal/rest/server.go function New (line 10) | func New(address string) *Server { type Server (line 21) | type Server struct method Listen (line 32) | func (s *Server) Listen(stop <-chan struct{}) { method buildRouter (line 54) | func (s *Server) buildRouter() http.Handler { FILE: ch04/acme/main.go function main (line 10) | func main() { FILE: ch04/fake.go function init (line 3) | func init() { FILE: ch05/02_advantages/01_function.go function SaveConfig (line 9) | func SaveConfig(filename string, cfg *Config) error { type Config (line 26) | type Config struct FILE: ch05/02_advantages/02_monkey_patched.go function SaveConfigPatched (line 10) | func SaveConfigPatched(filename string, cfg *Config) error { function SaveConfigPatchedUsage (line 31) | func SaveConfigPatchedUsage() { FILE: ch05/02_advantages/03_injected_lambda.go function SaveConfigInjected (line 11) | func SaveConfigInjected(writer fileWriter, filename string, cfg *Config)... type fileWriter (line 30) | type fileWriter function SaveConfigInjectedUsage (line 33) | func SaveConfigInjectedUsage() { FILE: ch05/02_advantages/04_as_object.go type ConfigSaver (line 11) | type ConfigSaver struct method Save (line 15) | func (c ConfigSaver) Save(filename string, cfg *Config) error { function ConfigSaverUsage (line 33) | func ConfigSaverUsage() { FILE: ch05/02_advantages/05_math_rand.go type Rand (line 4) | type Rand struct method Int (line 11) | func (r *Rand) Int() int { function Int (line 24) | func Int() int { return globalRand.Int() } function New (line 33) | func New(src Source) *Rand { type lockedSource (line 40) | type lockedSource struct method Int63 (line 44) | func (l *lockedSource) Int63() int64 { type Source (line 51) | type Source interface FILE: ch05/02_advantages/06_math_rand_test.go function TestInt (line 9) | func TestInt(t *testing.T) { type stubSource (line 26) | type stubSource struct method Int63 (line 29) | func (s *stubSource) Int63() int64 { FILE: ch05/03_applying/01_simple_sqlmock_test.go function TestSave_happyPath (line 12) | func TestSave_happyPath(t *testing.T) { function SavePerson (line 43) | func SavePerson(db *sql.DB, in *Person) (int, error) { FILE: ch05/03_applying/02_load.go constant sqlAllColumns (line 15) | sqlAllColumns = "id, fullname, phone, currency, price" constant sqlLoadByID (line 16) | sqlLoadByID = "SELECT " + sqlAllColumns + " FROM person WHERE id = ? L... function TestLoad_happyPath (line 19) | func TestLoad_happyPath(t *testing.T) { function convertSQLToRegex (line 57) | func convertSQLToRegex(in string) string { function Load (line 64) | func Load(ID int) (*Person, error) { type Person (line 79) | type Person struct FILE: ch05/04_disadvantages/01_verbose.go function SaveConfig (line 9) | func SaveConfig(filename string, cfg *Config) error { type Config (line 29) | type Config struct FILE: ch05/04_disadvantages/02_verbose_test.go function TestSaveConfig (line 10) | func TestSaveConfig(t *testing.T) { FILE: ch05/04_disadvantages/03_refactored_test.go function TestSaveConfig_refactored (line 10) | func TestSaveConfig_refactored(t *testing.T) { function mockWriteFile (line 30) | func mockWriteFile(result error) func(filename string, data []byte, perm... function restoreWriteFile (line 37) | func restoreWriteFile(original func(filename string, data []byte, perm o... FILE: ch05/acme/internal/config/config.go constant DefaultEnvVar (line 12) | DefaultEnvVar = "ACME_CONFIG" type Config (line 18) | type Config struct function init (line 36) | func init() { function load (line 46) | func load(filename string) error { FILE: ch05/acme/internal/config/config_test.go function TestLoad (line 10) | func TestLoad(t *testing.T) { FILE: ch05/acme/internal/logging/logging.go type LoggerStdOut (line 11) | type LoggerStdOut struct method Debug (line 14) | func (l LoggerStdOut) Debug(message string, args ...interface{}) { method Info (line 19) | func (l LoggerStdOut) Info(message string, args ...interface{}) { method Warn (line 24) | func (l LoggerStdOut) Warn(message string, args ...interface{}) { method Error (line 29) | func (l LoggerStdOut) Error(message string, args ...interface{}) { FILE: ch05/acme/internal/modules/data/data.go constant defaultPersonID (line 15) | defaultPersonID = 0 constant sqlAllColumns (line 18) | sqlAllColumns = "id, fullname, phone, currency, price" constant sqlInsert (line 19) | sqlInsert = "INSERT INTO person (fullname, phone, currency, price) V... constant sqlLoadAll (line 20) | sqlLoadAll = "SELECT " + sqlAllColumns + " FROM person" constant sqlLoadByID (line 21) | sqlLoadByID = "SELECT " + sqlAllColumns + " FROM person WHERE id = ? L... type Person (line 49) | type Person struct function Save (line 64) | func Save(in *Person) (int, error) { function LoadAll (line 91) | func LoadAll() ([]*Person, error) { function Load (line 131) | func Load(ID int) (*Person, error) { type scanner (line 156) | type scanner function populatePerson (line 159) | func populatePerson(scanner scanner) (*Person, error) { function init (line 165) | func init() { FILE: ch05/acme/internal/modules/data/data_test.go function TestSave_happyPath (line 14) | func TestSave_happyPath(t *testing.T) { function TestSave_insertError (line 51) | func TestSave_insertError(t *testing.T) { function TestSave_getDBError (line 89) | func TestSave_getDBError(t *testing.T) { function TestLoadAll_tableDrivenTest (line 116) | func TestLoadAll_tableDrivenTest(t *testing.T) { function TestLoad_tableDrivenTest (line 179) | func TestLoad_tableDrivenTest(t *testing.T) { function convertSQLToRegex (line 241) | func convertSQLToRegex(in string) string { FILE: ch05/acme/internal/modules/exchange/converter.go constant urlFormat (line 16) | urlFormat = "%s/api/historical?access_key=%s&date=2018-06-20¤cies=%s" constant defaultPrice (line 19) | defaultPrice = 0.0 type Converter (line 24) | type Converter struct method Do (line 27) | func (c *Converter) Do(basePrice float64, currency string) (float64, e... method loadRateFromServer (line 45) | func (c *Converter) loadRateFromServer(currency string) (*http.Respons... method extractRate (line 68) | func (c *Converter) extractRate(response *http.Response, currency stri... method extractResponse (line 91) | func (c *Converter) extractResponse(response *http.Response) (*apiResp... type apiResponseFormat (line 110) | type apiResponseFormat struct FILE: ch05/acme/internal/modules/get/get.go type Getter (line 16) | type Getter struct method Do (line 20) | func (g *Getter) Do(ID int) (*data.Person, error) { FILE: ch05/acme/internal/modules/get/go_test.go function TestGetter_Do_happyPath (line 12) | func TestGetter_Do_happyPath(t *testing.T) { function TestGetter_Do_noSuchPerson (line 44) | func TestGetter_Do_noSuchPerson(t *testing.T) { function TestGetter_Do_error (line 72) | func TestGetter_Do_error(t *testing.T) { FILE: ch05/acme/internal/modules/list/list.go type Lister (line 16) | type Lister struct method Do (line 20) | func (l *Lister) Do() ([]*data.Person, error) { method load (line 36) | func (l *Lister) load() ([]*data.Person, error) { FILE: ch05/acme/internal/modules/list/list_test.go function TestLister_Do_happyPath (line 12) | func TestLister_Do_happyPath(t *testing.T) { function TestLister_Do_noResults (line 46) | func TestLister_Do_noResults(t *testing.T) { function TestLister_Do_error (line 71) | func TestLister_Do_error(t *testing.T) { FILE: ch05/acme/internal/modules/register/register.go constant defaultPersonID (line 14) | defaultPersonID = 0 type Registerer (line 43) | type Registerer struct method Do (line 47) | func (r *Registerer) Do(in *data.Person) (int, error) { method validateInput (line 72) | func (r *Registerer) validateInput(in *data.Person) error { method getPrice (line 92) | func (r *Registerer) getPrice(currency string) (float64, error) { method save (line 104) | func (r *Registerer) save(in *data.Person, price float64) (int, error) { FILE: ch05/acme/internal/modules/register/register_test.go function TestRegisterer_Do_happyPath (line 12) | func TestRegisterer_Do_happyPath(t *testing.T) { function TestRegisterer_Do_error (line 44) | func TestRegisterer_Do_error(t *testing.T) { FILE: ch05/acme/internal/rest/common_test.go function getOpenPort (line 8) | func getOpenPort() (string, error) { function startServer (line 20) | func startServer(ctx context.Context) (string, error) { FILE: ch05/acme/internal/rest/get.go constant defaultPersonID (line 19) | defaultPersonID = 0 type GetHandler (line 26) | type GetHandler struct method ServeHTTP (line 30) | func (h *GetHandler) ServeHTTP(response http.ResponseWriter, request *... method extractID (line 57) | func (h *GetHandler) extractID(request *http.Request) (int, error) { method writeJSON (line 81) | func (h *GetHandler) writeJSON(writer io.Writer, person *data.Person) ... type getResponseFormat (line 95) | type getResponseFormat struct FILE: ch05/acme/internal/rest/get_test.go function TestGetHandler_ServeHTTP (line 14) | func TestGetHandler_ServeHTTP(t *testing.T) { FILE: ch05/acme/internal/rest/list.go type ListHandler (line 14) | type ListHandler struct method ServeHTTP (line 18) | func (h *ListHandler) ServeHTTP(response http.ResponseWriter, request ... method writeJSON (line 37) | func (h *ListHandler) writeJSON(writer io.Writer, people []*data.Perso... type listResponseFormat (line 54) | type listResponseFormat struct type listResponseItemFormat (line 58) | type listResponseItemFormat struct FILE: ch05/acme/internal/rest/list_test.go function TestListHandler_ServeHTTP (line 14) | func TestListHandler_ServeHTTP(t *testing.T) { FILE: ch05/acme/internal/rest/not_found.go function notFoundHandler (line 7) | func notFoundHandler(response http.ResponseWriter, _ *http.Request) { FILE: ch05/acme/internal/rest/not_found_test.go function TestNotFoundHandler_ServeHTTP (line 12) | func TestNotFoundHandler_ServeHTTP(t *testing.T) { FILE: ch05/acme/internal/rest/register.go type RegisterHandler (line 15) | type RegisterHandler struct method ServeHTTP (line 19) | func (h *RegisterHandler) ServeHTTP(response http.ResponseWriter, requ... method extractPayload (line 42) | func (h *RegisterHandler) extractPayload(request *http.Request) (*regi... method register (line 55) | func (h *RegisterHandler) register(requestPayload *registerRequest) (i... type registerRequest (line 67) | type registerRequest struct FILE: ch05/acme/internal/rest/register_test.go function TestRegisterHandler_ServeHTTP (line 16) | func TestRegisterHandler_ServeHTTP(t *testing.T) { function buildValidRequest (line 40) | func buildValidRequest() io.Reader { FILE: ch05/acme/internal/rest/server.go function New (line 10) | func New(address string) *Server { type Server (line 21) | type Server struct method Listen (line 32) | func (s *Server) Listen(stop <-chan struct{}) { method buildRouter (line 54) | func (s *Server) buildRouter() http.Handler { FILE: ch05/acme/main.go function main (line 10) | func main() { FILE: ch05/fake.go function init (line 3) | func init() { FILE: ch06/01_constructor_injection/01_welcome_email.go function NewWelcomeSender (line 7) | func NewWelcomeSender(in *Mailer) (*WelcomeSender, error) { function NewWelcomeSenderNoGuard (line 18) | func NewWelcomeSenderNoGuard(in *Mailer) *WelcomeSender { type WelcomeSender (line 25) | type WelcomeSender struct method Send (line 29) | func (w *WelcomeSender) Send(to string) error { method buildMessage (line 36) | func (w *WelcomeSender) buildMessage() string { type Mailer (line 41) | type Mailer struct method Send (line 48) | func (m *Mailer) Send(to string, body string) error { method Receive (line 53) | func (m *Mailer) Receive(address string) (string, error) { FILE: ch06/01_constructor_injection/01_welcome_email_test.go function TestNewWelcomeSender_happyPath (line 9) | func TestNewWelcomeSender_happyPath(t *testing.T) { function TestNewWelcomeSender_guardClause (line 15) | func TestNewWelcomeSender_guardClause(t *testing.T) { function TestNewWelcomeSenderNoGuard_happyPath (line 21) | func TestNewWelcomeSenderNoGuard_happyPath(t *testing.T) { FILE: ch06/01_constructor_injection/02_mailer_interface.go type MailerInterface (line 4) | type MailerInterface interface FILE: ch06/01_constructor_injection/03_sender_interface.go type Sender (line 3) | type Sender interface function NewWelcomeSenderV2 (line 7) | func NewWelcomeSenderV2(in Sender) *WelcomeSenderV2 { type WelcomeSenderV2 (line 14) | type WelcomeSenderV2 struct method Send (line 18) | func (w *WelcomeSenderV2) Send(to string) error { method buildMessage (line 25) | func (w *WelcomeSenderV2) buildMessage() string { FILE: ch06/01_constructor_injection/05_duck_typing.go type Talker (line 7) | type Talker interface type Dog (line 12) | type Dog struct method Speak (line 14) | func (d Dog) Speak() string { method Shout (line 18) | func (d Dog) Shout() string { function SpeakExample (line 22) | func SpeakExample() { FILE: ch06/02_advantages/01_easy_to_implement.go type WelcomeSender (line 4) | type WelcomeSender struct method Send (line 8) | func (w *WelcomeSender) Send(to string) error { method buildMessage (line 15) | func (w *WelcomeSender) buildMessage() string { type Mailer (line 20) | type Mailer struct method Send (line 22) | func (m *Mailer) Send(to string, body string) error { FILE: ch06/02_advantages/01_easy_to_implement_example_test.go function ExampleWelcomeSender_Send (line 7) | func ExampleWelcomeSender_Send() { FILE: ch06/02_advantages/02_easy_to_implement.go function NewWelcomeSenderV2 (line 3) | func NewWelcomeSenderV2(mailer *Mailer) *WelcomeSenderV2 { type WelcomeSenderV2 (line 10) | type WelcomeSenderV2 struct method Send (line 14) | func (w *WelcomeSenderV2) Send(to string) error { method buildMessage (line 21) | func (w *WelcomeSenderV2) buildMessage() string { FILE: ch06/02_advantages/02_easy_to_implement_example_test.go function ExampleWelcomeSenderV2_Send (line 7) | func ExampleWelcomeSenderV2_Send() { FILE: ch06/02_advantages/03_predictable.go type Engine (line 7) | type Engine interface type Car (line 15) | type Car struct method Drive (line 19) | func (c *Car) Drive() error { method Stop (line 31) | func (c *Car) Stop() error { FILE: ch06/02_advantages/04_predictable.go function NewCarV2 (line 7) | func NewCarV2(engine Engine) (*CarV2, error) { type CarV2 (line 17) | type CarV2 struct method Drive (line 21) | func (c *CarV2) Drive() error { method Stop (line 29) | func (c *CarV2) Stop() error { FILE: ch06/02_advantages/05_encapsulation.go method FillPetrolTank (line 7) | func (c *CarV2) FillPetrolTank() error { method fill (line 17) | func (c CarV2) fill() error { FILE: ch06/02_advantages/06_encapsulation.go method FillPetrolTankV2 (line 7) | func (c *CarV2) FillPetrolTankV2(engine Engine) error { FILE: ch06/03_applying/01/01_register_handler_before.go type RegisterHandler (line 15) | type RegisterHandler struct method ServeHTTP (line 19) | func (h *RegisterHandler) ServeHTTP(response http.ResponseWriter, requ... method extractPayload (line 42) | func (h *RegisterHandler) extractPayload(request *http.Request) (*regi... method register (line 55) | func (h *RegisterHandler) register(requestPayload *registerRequest) (i... type registerRequest (line 67) | type registerRequest struct FILE: ch06/03_applying/01/data/person.go type Person (line 4) | type Person struct FILE: ch06/03_applying/01/register/register.go type Registerer (line 13) | type Registerer struct method Do (line 17) | func (r *Registerer) Do(in *data.Person) (int, error) { FILE: ch06/03_applying/02/01_register_handler.go type RegisterHandler (line 10) | type RegisterHandler struct FILE: ch06/03_applying/02/data/person.go type Person (line 4) | type Person struct FILE: ch06/03_applying/02/register/register.go type Registerer (line 13) | type Registerer struct method Do (line 17) | func (r *Registerer) Do(in *data.Person) (int, error) { FILE: ch06/03_applying/03/data/person.go type Person (line 4) | type Person struct FILE: ch06/03_applying/03/mock_register_model_test.go type MockRegisterModel (line 13) | type MockRegisterModel struct method Do (line 18) | func (_m *MockRegisterModel) Do(in *data.Person) (int, error) { FILE: ch06/03_applying/03/register_test.go function TestRegisterHandler_ServeHTTP (line 8) | func TestRegisterHandler_ServeHTTP(t *testing.T) { FILE: ch06/03_applying/04/data/person.go type Person (line 4) | type Person struct FILE: ch06/03_applying/04/mock_register_model_test.go type MockRegisterModel (line 13) | type MockRegisterModel struct method Do (line 18) | func (_m *MockRegisterModel) Do(in *data.Person) (int, error) { FILE: ch06/03_applying/04/register.go type RegisterModel (line 10) | type RegisterModel interface type RegisterHandler (line 17) | type RegisterHandler struct method ServeHTTP (line 22) | func (h *RegisterHandler) ServeHTTP(response http.ResponseWriter, requ... type registerRequest (line 27) | type registerRequest struct FILE: ch06/03_applying/04/register_test.go function TestRegisterHandler_ServeHTTP (line 15) | func TestRegisterHandler_ServeHTTP(t *testing.T) { function buildValidRequest (line 54) | func buildValidRequest() io.Reader { FILE: ch06/03_applying/05/data/person.go type Person (line 4) | type Person struct FILE: ch06/03_applying/05/fakes.go function notFoundHandler (line 9) | func notFoundHandler(response http.ResponseWriter, _ *http.Request) { type Server (line 16) | type Server struct function NewGetHandler (line 25) | func NewGetHandler(_ GetModel) *GetHandler { type GetModel (line 29) | type GetModel interface type GetHandler (line 33) | type GetHandler struct method ServeHTTP (line 35) | func (g *GetHandler) ServeHTTP(response http.ResponseWriter, request *... function NewListHandler (line 37) | func NewListHandler(_ ListModel) *ListHandler { type ListModel (line 41) | type ListModel interface type ListHandler (line 45) | type ListHandler struct method ServeHTTP (line 48) | func (l *ListHandler) ServeHTTP(response http.ResponseWriter, request ... function NewRegisterHandler (line 50) | func NewRegisterHandler(_ RegisterModel) *RegisterHandler { type RegisterModel (line 54) | type RegisterModel interface type RegisterHandler (line 58) | type RegisterHandler struct method ServeHTTP (line 61) | func (r *RegisterHandler) ServeHTTP(response http.ResponseWriter, requ... FILE: ch06/03_applying/05/get/getter.go type Getter (line 8) | type Getter struct method Do (line 10) | func (g *Getter) Do(ID int) (*data.Person, error) { FILE: ch06/03_applying/05/list/lister.go type Lister (line 8) | type Lister struct method Do (line 10) | func (l *Lister) Do() ([]*data.Person, error) { FILE: ch06/03_applying/05/register/registerer.go type Registerer (line 8) | type Registerer struct method Do (line 10) | func (r *Registerer) Do(in *data.Person) (int, error) { FILE: ch06/03_applying/05/server.go function New (line 10) | func New(address string) *Server { FILE: ch06/04_disadvantages/01_lots_of_changes.go function DealCards (line 4) | func DealCards() (player1 []Card, player2 []Card) { function newDeck (line 22) | func newDeck() []Card { type Shuffler (line 29) | type Shuffler interface type Card (line 34) | type Card struct type myShuffler (line 40) | type myShuffler struct method Shuffle (line 43) | func (m *myShuffler) Shuffle(cards []Card) { FILE: ch06/04_disadvantages/02_overuse.go constant downstreamServer (line 9) | downstreamServer = "http://www.example.com" type FetchRates (line 12) | type FetchRates struct method Fetch (line 14) | func (f *FetchRates) Fetch() ([]Rate, error) { type downstreamResponse (line 48) | type downstreamResponse struct type Rate (line 52) | type Rate struct FILE: ch06/04_disadvantages/03_non_obvious.go function NewClient (line 8) | func NewClient(service DepService) Client { type Client (line 15) | type Client interface type clientImpl (line 20) | type clientImpl struct method DoSomethingUseful (line 24) | func (c *clientImpl) DoSomethingUseful() (bool, error) { type DepService (line 29) | type DepService interface FILE: ch06/04_disadvantages/04_non_obvious_example_test.go function Example (line 3) | func Example() { type StubClient (line 8) | type StubClient struct method DoSomethingUseful (line 11) | func (s *StubClient) DoSomethingUseful() (bool, error) { FILE: ch06/04_disadvantages/05_constructors.go type InnerService (line 3) | type InnerService struct function NewInnerService (line 7) | func NewInnerService(innerDep Dependency) *InnerService { type OuterService (line 13) | type OuterService struct function NewOuterService (line 20) | func NewOuterService(outerDep Dependency, innerDep Dependency) *OuterSer... type Dependency (line 28) | type Dependency interface FILE: ch06/acme/internal/config/config.go constant DefaultEnvVar (line 12) | DefaultEnvVar = "ACME_CONFIG" type Config (line 18) | type Config struct function init (line 36) | func init() { function load (line 46) | func load(filename string) error { FILE: ch06/acme/internal/config/config_test.go function TestLoad (line 10) | func TestLoad(t *testing.T) { FILE: ch06/acme/internal/logging/logging.go type LoggerStdOut (line 11) | type LoggerStdOut struct method Debug (line 14) | func (l LoggerStdOut) Debug(message string, args ...interface{}) { method Info (line 19) | func (l LoggerStdOut) Info(message string, args ...interface{}) { method Warn (line 24) | func (l LoggerStdOut) Warn(message string, args ...interface{}) { method Error (line 29) | func (l LoggerStdOut) Error(message string, args ...interface{}) { FILE: ch06/acme/internal/modules/data/data.go constant defaultPersonID (line 15) | defaultPersonID = 0 constant sqlAllColumns (line 18) | sqlAllColumns = "id, fullname, phone, currency, price" constant sqlInsert (line 19) | sqlInsert = "INSERT INTO person (fullname, phone, currency, price) V... constant sqlLoadAll (line 20) | sqlLoadAll = "SELECT " + sqlAllColumns + " FROM person" constant sqlLoadByID (line 21) | sqlLoadByID = "SELECT " + sqlAllColumns + " FROM person WHERE id = ? L... type Person (line 49) | type Person struct function Save (line 64) | func Save(in *Person) (int, error) { function LoadAll (line 91) | func LoadAll() ([]*Person, error) { function Load (line 131) | func Load(ID int) (*Person, error) { type scanner (line 156) | type scanner function populatePerson (line 159) | func populatePerson(scanner scanner) (*Person, error) { function init (line 165) | func init() { FILE: ch06/acme/internal/modules/data/data_test.go function TestSave_happyPath (line 14) | func TestSave_happyPath(t *testing.T) { function TestSave_insertError (line 51) | func TestSave_insertError(t *testing.T) { function TestSave_getDBError (line 89) | func TestSave_getDBError(t *testing.T) { function TestLoadAll_tableDrivenTest (line 116) | func TestLoadAll_tableDrivenTest(t *testing.T) { function TestLoad_tableDrivenTest (line 179) | func TestLoad_tableDrivenTest(t *testing.T) { function convertSQLToRegex (line 241) | func convertSQLToRegex(in string) string { FILE: ch06/acme/internal/modules/exchange/converter.go constant urlFormat (line 16) | urlFormat = "%s/api/historical?access_key=%s&date=2018-06-20¤cies=%s" constant defaultPrice (line 19) | defaultPrice = 0.0 type Converter (line 24) | type Converter struct method Do (line 27) | func (c *Converter) Do(basePrice float64, currency string) (float64, e... method loadRateFromServer (line 45) | func (c *Converter) loadRateFromServer(currency string) (*http.Respons... method extractRate (line 68) | func (c *Converter) extractRate(response *http.Response, currency stri... method extractResponse (line 91) | func (c *Converter) extractResponse(response *http.Response) (*apiResp... type apiResponseFormat (line 110) | type apiResponseFormat struct FILE: ch06/acme/internal/modules/get/get.go type Getter (line 16) | type Getter struct method Do (line 20) | func (g *Getter) Do(ID int) (*data.Person, error) { FILE: ch06/acme/internal/modules/get/go_test.go function TestGetter_Do_happyPath (line 12) | func TestGetter_Do_happyPath(t *testing.T) { function TestGetter_Do_noSuchPerson (line 44) | func TestGetter_Do_noSuchPerson(t *testing.T) { function TestGetter_Do_error (line 72) | func TestGetter_Do_error(t *testing.T) { FILE: ch06/acme/internal/modules/list/list.go type Lister (line 16) | type Lister struct method Do (line 20) | func (l *Lister) Do() ([]*data.Person, error) { method load (line 36) | func (l *Lister) load() ([]*data.Person, error) { FILE: ch06/acme/internal/modules/list/list_test.go function TestLister_Do_happyPath (line 12) | func TestLister_Do_happyPath(t *testing.T) { function TestLister_Do_noResults (line 46) | func TestLister_Do_noResults(t *testing.T) { function TestLister_Do_error (line 71) | func TestLister_Do_error(t *testing.T) { FILE: ch06/acme/internal/modules/register/register.go constant defaultPersonID (line 14) | defaultPersonID = 0 type Registerer (line 43) | type Registerer struct method Do (line 47) | func (r *Registerer) Do(in *data.Person) (int, error) { method validateInput (line 72) | func (r *Registerer) validateInput(in *data.Person) error { method getPrice (line 92) | func (r *Registerer) getPrice(currency string) (float64, error) { method save (line 104) | func (r *Registerer) save(in *data.Person, price float64) (int, error) { FILE: ch06/acme/internal/modules/register/register_test.go function TestRegisterer_Do_happyPath (line 12) | func TestRegisterer_Do_happyPath(t *testing.T) { function TestRegisterer_Do_error (line 44) | func TestRegisterer_Do_error(t *testing.T) { FILE: ch06/acme/internal/rest/get.go constant defaultPersonID (line 18) | defaultPersonID = 0 constant muxVarID (line 21) | muxVarID = "id" type GetModel (line 26) | type GetModel interface function NewGetHandler (line 31) | func NewGetHandler(model GetModel) *GetHandler { type GetHandler (line 41) | type GetHandler struct method ServeHTTP (line 46) | func (h *GetHandler) ServeHTTP(response http.ResponseWriter, request *... method extractID (line 72) | func (h *GetHandler) extractID(request *http.Request) (int, error) { method writeJSON (line 96) | func (h *GetHandler) writeJSON(writer io.Writer, person *data.Person) ... type getResponseFormat (line 110) | type getResponseFormat struct FILE: ch06/acme/internal/rest/get_test.go function TestGetHandler_ServeHTTP (line 17) | func TestGetHandler_ServeHTTP(t *testing.T) { FILE: ch06/acme/internal/rest/list.go type ListModel (line 13) | type ListModel interface function NewListHandler (line 18) | func NewListHandler(model ListModel) *ListHandler { type ListHandler (line 26) | type ListHandler struct method ServeHTTP (line 31) | func (h *ListHandler) ServeHTTP(response http.ResponseWriter, request ... method writeJSON (line 49) | func (h *ListHandler) writeJSON(writer io.Writer, people []*data.Perso... type listResponseFormat (line 66) | type listResponseFormat struct type listResponseItemFormat (line 70) | type listResponseItemFormat struct FILE: ch06/acme/internal/rest/list_test.go function TestListHandler_ServeHTTP (line 16) | func TestListHandler_ServeHTTP(t *testing.T) { FILE: ch06/acme/internal/rest/mock_get_model_test.go type MockGetModel (line 13) | type MockGetModel struct method Do (line 18) | func (_m *MockGetModel) Do(ID int) (*data.Person, error) { FILE: ch06/acme/internal/rest/mock_list_model_test.go type MockListModel (line 13) | type MockListModel struct method Do (line 18) | func (_m *MockListModel) Do() ([]*data.Person, error) { FILE: ch06/acme/internal/rest/mock_register_model_test.go type MockRegisterModel (line 13) | type MockRegisterModel struct method Do (line 18) | func (_m *MockRegisterModel) Do(in *data.Person) (int, error) { FILE: ch06/acme/internal/rest/not_found.go function notFoundHandler (line 7) | func notFoundHandler(response http.ResponseWriter, _ *http.Request) { FILE: ch06/acme/internal/rest/not_found_test.go function TestNotFoundHandler_ServeHTTP (line 11) | func TestNotFoundHandler_ServeHTTP(t *testing.T) { FILE: ch06/acme/internal/rest/register.go type RegisterModel (line 13) | type RegisterModel interface function NewRegisterHandler (line 18) | func NewRegisterHandler(model RegisterModel) *RegisterHandler { type RegisterHandler (line 27) | type RegisterHandler struct method ServeHTTP (line 32) | func (h *RegisterHandler) ServeHTTP(response http.ResponseWriter, requ... method extractPayload (line 55) | func (h *RegisterHandler) extractPayload(request *http.Request) (*regi... method register (line 68) | func (h *RegisterHandler) register(requestPayload *registerRequest) (i... type registerRequest (line 79) | type registerRequest struct FILE: ch06/acme/internal/rest/register_test.go function TestRegisterHandler_ServeHTTP (line 17) | func TestRegisterHandler_ServeHTTP(t *testing.T) { function buildValidRegisterRequest (line 113) | func buildValidRegisterRequest() io.Reader { FILE: ch06/acme/internal/rest/server.go function New (line 10) | func New(address string, type Server (line 25) | type Server struct method Listen (line 36) | func (s *Server) Listen(stop <-chan struct{}) { method buildRouter (line 58) | func (s *Server) buildRouter() http.Handler { FILE: ch06/acme/main.go function main (line 13) | func main() { FILE: ch06/fake.go function init (line 3) | func init() { FILE: ch07/01_method_injection/01_fprint.go function ExampleA (line 8) | func ExampleA() { FILE: ch07/01_method_injection/02_http_request.go function ExampleB (line 9) | func ExampleB() { FILE: ch07/01_method_injection/03_fprint.go function Fprint (line 9) | func Fprint(w io.Writer, a ...interface{}) (n int, err error) { FILE: ch07/01_method_injection/04_http_request.go function NewRequest (line 10) | func NewRequest(method, url string, body io.Reader) (*http.Request, erro... function validateMethod (line 40) | func validateMethod(method string) (string, error) { function validateURL (line 44) | func validateURL(url string) (*url.URL, error) { FILE: ch07/01_method_injection/05_timestamp_writer_v1.go function TimeStampWriterV1 (line 10) | func TimeStampWriterV1(writer io.Writer, message string) { FILE: ch07/01_method_injection/06_timestamp_writer_v2.go function TimeStampWriterV2 (line 11) | func TimeStampWriterV2(writer io.Writer, message string) error { FILE: ch07/01_method_injection/07_timestamp_writer_v3.go function TimeStampWriterV3 (line 11) | func TimeStampWriterV3(writer io.Writer, message string) { FILE: ch07/02_advantages/01_handler_v1.go function HandlerV1 (line 8) | func HandlerV1(response http.ResponseWriter, request *http.Request) { type Animal (line 25) | type Animal struct FILE: ch07/02_advantages/02_handler_v2.go function HandlerV2 (line 8) | func HandlerV2(response http.ResponseWriter, request *http.Request) { function outputAnimal (line 18) | func outputAnimal(response http.ResponseWriter, animal *Animal) { FILE: ch07/02_advantages/03_handler_v3.go function HandlerV3 (line 8) | func HandlerV3(response http.ResponseWriter, request *http.Request) { function outputJSON (line 18) | func outputJSON(response http.ResponseWriter, data interface{}) { FILE: ch07/02_advantages/04_context_influence.go function WriteLog (line 9) | func WriteLog(writer io.Writer, message string) error { function Usage (line 14) | func Usage() { FILE: ch07/02_advantages/05_person_loader.go type OrderLoader (line 16) | type OrderLoader interface function NewLoadOrderHandler (line 21) | func NewLoadOrderHandler(loader OrderLoader) *LoadOrderHandler { type LoadOrderHandler (line 28) | type LoadOrderHandler struct method ServeHTTP (line 33) | func (l *LoadOrderHandler) ServeHTTP(response http.ResponseWriter, req... method authenticateUser (line 115) | func (l *LoadOrderHandler) authenticateUser(request *http.Request) (*U... method extractOrderID (line 120) | func (l *LoadOrderHandler) extractOrderID(request *http.Request) (int,... type AuthenticatedLoader (line 68) | type AuthenticatedLoader struct method loadByOwner (line 74) | func (a *AuthenticatedLoader) loadByOwner(owner Owner, orderID int) (*... method load (line 89) | func (a *AuthenticatedLoader) load(orderID int) (*Order, error) { type Owner (line 94) | type Owner interface type Order (line 98) | type Order struct type User (line 104) | type User struct method ID (line 110) | func (u *User) ID() int { FILE: ch07/04_disadvantages/01_data_struct.go type PersonLoader (line 9) | type PersonLoader struct method Load (line 12) | func (d *PersonLoader) Load(db *sql.DB, ID int) (*Person, error) { method LoadAll (line 16) | func (d *PersonLoader) LoadAll(db *sql.DB) ([]*Person, error) { type Person (line 20) | type Person struct FILE: ch07/04_disadvantages/02_ux_improvement.go type MyPersonLoader (line 3) | type MyPersonLoader interface FILE: ch07/04_disadvantages/03_many_params.go type Generator (line 7) | type Generator struct method Generate (line 9) | func (g *Generator) Generate(storage Storage, template io.Reader, dest... type Storage (line 13) | type Storage interface type Renderer (line 17) | type Renderer interface type Formatter (line 21) | type Formatter interface FILE: ch07/04_disadvantages/04_many_params_v2.go function NewGeneratorV2 (line 7) | func NewGeneratorV2(storage Storage, renderer Renderer, formatter Format... type GeneratorV2 (line 15) | type GeneratorV2 struct method Generate (line 21) | func (g *GeneratorV2) Generate(template io.Reader, destination io.Writ... FILE: ch07/acme/internal/config/config.go constant DefaultEnvVar (line 12) | DefaultEnvVar = "ACME_CONFIG" type Config (line 18) | type Config struct function init (line 36) | func init() { function load (line 46) | func load(filename string) error { FILE: ch07/acme/internal/config/config_test.go function TestLoad (line 10) | func TestLoad(t *testing.T) { FILE: ch07/acme/internal/logging/logging.go type LoggerStdOut (line 11) | type LoggerStdOut struct method Debug (line 14) | func (l LoggerStdOut) Debug(message string, args ...interface{}) { method Info (line 19) | func (l LoggerStdOut) Info(message string, args ...interface{}) { method Warn (line 24) | func (l LoggerStdOut) Warn(message string, args ...interface{}) { method Error (line 29) | func (l LoggerStdOut) Error(message string, args ...interface{}) { FILE: ch07/acme/internal/modules/data/data.go constant defaultPersonID (line 17) | defaultPersonID = 0 constant sqlAllColumns (line 20) | sqlAllColumns = "id, fullname, phone, currency, price" constant sqlInsert (line 21) | sqlInsert = "INSERT INTO person (fullname, phone, currency, price) V... constant sqlLoadAll (line 22) | sqlLoadAll = "SELECT " + sqlAllColumns + " FROM person" constant sqlLoadByID (line 23) | sqlLoadByID = "SELECT " + sqlAllColumns + " FROM person WHERE id = ? L... type Person (line 51) | type Person struct function Save (line 66) | func Save(ctx context.Context, in *Person) (int, error) { function LoadAll (line 97) | func LoadAll(ctx context.Context) ([]*Person, error) { function Load (line 141) | func Load(ctx context.Context, ID int) (*Person, error) { type scanner (line 170) | type scanner function populatePerson (line 173) | func populatePerson(scanner scanner) (*Person, error) { function init (line 179) | func init() { FILE: ch07/acme/internal/modules/data/data_test.go function TestSave_happyPath (line 16) | func TestSave_happyPath(t *testing.T) { function TestSave_insertError (line 57) | func TestSave_insertError(t *testing.T) { function TestSave_getDBError (line 99) | func TestSave_getDBError(t *testing.T) { function TestLoadAll_tableDrivenTest (line 130) | func TestLoadAll_tableDrivenTest(t *testing.T) { function TestLoad_tableDrivenTest (line 197) | func TestLoad_tableDrivenTest(t *testing.T) { function convertSQLToRegex (line 263) | func convertSQLToRegex(in string) string { FILE: ch07/acme/internal/modules/exchange/converter.go constant urlFormat (line 18) | urlFormat = "%s/api/historical?access_key=%s&date=2018-06-20¤cies=%s" constant defaultPrice (line 21) | defaultPrice = 0.0 type Converter (line 26) | type Converter struct method Do (line 29) | func (c *Converter) Do(ctx context.Context, basePrice float64, currenc... method loadRateFromServer (line 47) | func (c *Converter) loadRateFromServer(ctx context.Context, currency s... method extractRate (line 84) | func (c *Converter) extractRate(response *http.Response, currency stri... method extractResponse (line 107) | func (c *Converter) extractResponse(response *http.Response) (*apiResp... type apiResponseFormat (line 126) | type apiResponseFormat struct FILE: ch07/acme/internal/modules/get/get.go type Getter (line 17) | type Getter struct method Do (line 21) | func (g *Getter) Do(ID int) (*data.Person, error) { FILE: ch07/acme/internal/modules/get/go_test.go function TestGetter_Do_happyPath (line 13) | func TestGetter_Do_happyPath(t *testing.T) { function TestGetter_Do_noSuchPerson (line 45) | func TestGetter_Do_noSuchPerson(t *testing.T) { function TestGetter_Do_error (line 73) | func TestGetter_Do_error(t *testing.T) { FILE: ch07/acme/internal/modules/list/list.go type Lister (line 17) | type Lister struct method Do (line 21) | func (l *Lister) Do() ([]*data.Person, error) { method load (line 37) | func (l *Lister) load() ([]*data.Person, error) { FILE: ch07/acme/internal/modules/list/list_test.go function TestLister_Do_happyPath (line 13) | func TestLister_Do_happyPath(t *testing.T) { function TestLister_Do_noResults (line 47) | func TestLister_Do_noResults(t *testing.T) { function TestLister_Do_error (line 72) | func TestLister_Do_error(t *testing.T) { FILE: ch07/acme/internal/modules/register/register.go constant defaultPersonID (line 15) | defaultPersonID = 0 type Registerer (line 44) | type Registerer struct method Do (line 48) | func (r *Registerer) Do(ctx context.Context, in *data.Person) (int, er... method validateInput (line 73) | func (r *Registerer) validateInput(in *data.Person) error { method getPrice (line 93) | func (r *Registerer) getPrice(ctx context.Context, currency string) (f... method save (line 105) | func (r *Registerer) save(ctx context.Context, in *data.Person, price ... FILE: ch07/acme/internal/modules/register/register_test.go function TestRegisterer_Do_happyPath (line 14) | func TestRegisterer_Do_happyPath(t *testing.T) { function TestRegisterer_Do_error (line 50) | func TestRegisterer_Do_error(t *testing.T) { FILE: ch07/acme/internal/rest/get.go constant defaultPersonID (line 18) | defaultPersonID = 0 constant muxVarID (line 21) | muxVarID = "id" type GetModel (line 26) | type GetModel interface function NewGetHandler (line 31) | func NewGetHandler(model GetModel) *GetHandler { type GetHandler (line 41) | type GetHandler struct method ServeHTTP (line 46) | func (h *GetHandler) ServeHTTP(response http.ResponseWriter, request *... method extractID (line 72) | func (h *GetHandler) extractID(request *http.Request) (int, error) { method writeJSON (line 96) | func (h *GetHandler) writeJSON(writer io.Writer, person *data.Person) ... type getResponseFormat (line 110) | type getResponseFormat struct FILE: ch07/acme/internal/rest/get_test.go function TestGetHandler_ServeHTTP (line 17) | func TestGetHandler_ServeHTTP(t *testing.T) { FILE: ch07/acme/internal/rest/list.go type ListModel (line 13) | type ListModel interface function NewListHandler (line 18) | func NewListHandler(model ListModel) *ListHandler { type ListHandler (line 26) | type ListHandler struct method ServeHTTP (line 31) | func (h *ListHandler) ServeHTTP(response http.ResponseWriter, request ... method writeJSON (line 49) | func (h *ListHandler) writeJSON(writer io.Writer, people []*data.Perso... type listResponseFormat (line 66) | type listResponseFormat struct type listResponseItemFormat (line 70) | type listResponseItemFormat struct FILE: ch07/acme/internal/rest/list_test.go function TestListHandler_ServeHTTP (line 16) | func TestListHandler_ServeHTTP(t *testing.T) { FILE: ch07/acme/internal/rest/mock_get_model_test.go type MockGetModel (line 13) | type MockGetModel struct method Do (line 18) | func (_m *MockGetModel) Do(ID int) (*data.Person, error) { FILE: ch07/acme/internal/rest/mock_list_model_test.go type MockListModel (line 13) | type MockListModel struct method Do (line 18) | func (_m *MockListModel) Do() ([]*data.Person, error) { FILE: ch07/acme/internal/rest/mock_register_model_test.go type MockRegisterModel (line 15) | type MockRegisterModel struct method Do (line 20) | func (_m *MockRegisterModel) Do(ctx context.Context, in *data.Person) ... FILE: ch07/acme/internal/rest/not_found.go function notFoundHandler (line 7) | func notFoundHandler(response http.ResponseWriter, _ *http.Request) { FILE: ch07/acme/internal/rest/not_found_test.go function TestNotFoundHandler_ServeHTTP (line 11) | func TestNotFoundHandler_ServeHTTP(t *testing.T) { FILE: ch07/acme/internal/rest/register.go type RegisterModel (line 15) | type RegisterModel interface function NewRegisterHandler (line 20) | func NewRegisterHandler(model RegisterModel) *RegisterHandler { type RegisterHandler (line 29) | type RegisterHandler struct method ServeHTTP (line 34) | func (h *RegisterHandler) ServeHTTP(response http.ResponseWriter, requ... method extractPayload (line 61) | func (h *RegisterHandler) extractPayload(request *http.Request) (*regi... method register (line 74) | func (h *RegisterHandler) register(ctx context.Context, requestPayload... type registerRequest (line 85) | type registerRequest struct FILE: ch07/acme/internal/rest/register_test.go function TestRegisterHandler_ServeHTTP (line 17) | func TestRegisterHandler_ServeHTTP(t *testing.T) { function buildValidRegisterRequest (line 113) | func buildValidRegisterRequest() io.Reader { FILE: ch07/acme/internal/rest/server.go function New (line 10) | func New(address string, type Server (line 25) | type Server struct method Listen (line 36) | func (s *Server) Listen(stop <-chan struct{}) { method buildRouter (line 58) | func (s *Server) buildRouter() http.Handler { FILE: ch07/acme/main.go function main (line 13) | func main() { FILE: ch07/fake.go function init (line 3) | func init() { FILE: ch08/01_config_injection/01_long_constructor.go function NewLongConstructor (line 8) | func NewLongConstructor(logger Logger, stats Instrumentation, limiter Ra... type MyStruct (line 15) | type MyStruct struct type Logger (line 19) | type Logger interface type Instrumentation (line 27) | type Instrumentation interface type RateLimiter (line 33) | type RateLimiter interface type Cache (line 39) | type Cache interface FILE: ch08/01_config_injection/02_by_config_example.go function NewByConfigConstructor (line 8) | func NewByConfigConstructor(cfg MyConfig, limiter RateLimiter, cache Cac... type MyConfig (line 15) | type MyConfig interface FILE: ch08/01_config_injection/03_shared_params.go function Usage (line 8) | func Usage() { type FetcherConfig (line 17) | type FetcherConfig interface function NewFetcher (line 22) | func NewFetcher(cfg FetcherConfig, url string, timeout time.Duration) *M... type MyObject (line 26) | type MyObject struct type fakeConfig (line 29) | type fakeConfig struct method Logger (line 32) | func (f *fakeConfig) Logger() Logger { method Instrumentation (line 37) | func (f *fakeConfig) Instrumentation() Instrumentation { method URL (line 41) | func (f *fakeConfig) URL() string { method Timeout (line 45) | func (f *fakeConfig) Timeout() time.Duration { FILE: ch08/02_advantages/01_injected_config/01.go function NewMyObject (line 7) | func NewMyObject(cfg *config.Config) *MyObject { type MyObject (line 13) | type MyObject struct method Do (line 17) | func (m *MyObject) Do() (interface{}, error) { FILE: ch08/02_advantages/01_injected_config/01_test.go constant testConfigLocation (line 12) | testConfigLocation = "" function TestInjectedConfig (line 15) | func TestInjectedConfig(t *testing.T) { FILE: ch08/02_advantages/02_config_injection/02.go function NewMyObject (line 8) | func NewMyObject(cfg Config) *MyObject { type Config (line 14) | type Config interface type MyObject (line 19) | type MyObject struct method Do (line 23) | func (m *MyObject) Do() (interface{}, error) { FILE: ch08/02_advantages/02_config_injection/02_test.go function TestConfigInjection (line 11) | func TestConfigInjection(t *testing.T) { type TestConfig (line 25) | type TestConfig struct method Logger (line 30) | func (t *TestConfig) Logger() *logging.Logger { method Stats (line 34) | func (t *TestConfig) Stats() *stats.Collector { FILE: ch08/02_advantages/03_long_constructor.go function NewLongConstructor (line 8) | func NewLongConstructor(logger Logger, stats Instrumentation, limiter Ra... type MyStruct (line 15) | type MyStruct struct type Logger (line 19) | type Logger interface type Instrumentation (line 27) | type Instrumentation interface type RateLimiter (line 33) | type RateLimiter interface type Cache (line 39) | type Cache interface FILE: ch08/02_advantages/04_by_config_example.go function NewByConfigConstructor (line 4) | func NewByConfigConstructor(cfg MyConfig, url string, credentials string... type MyConfig (line 11) | type MyConfig interface FILE: ch08/02_advantages/config/config.go function LoadFromFile (line 11) | func LoadFromFile(path string) (*Config, error) { type Config (line 17) | type Config struct method Logger (line 32) | func (c *Config) Logger() *logging.Logger { method Stats (line 43) | func (c *Config) Stats() *stats.Collector { FILE: ch08/02_advantages/logging/logger.go type Logger (line 4) | type Logger struct method Error (line 9) | func (l *Logger) Error(message string, args ...interface{}) { method Warn (line 14) | func (l *Logger) Warn(message string, args ...interface{}) { method Info (line 19) | func (l *Logger) Info(message string, args ...interface{}) { method Debug (line 24) | func (l *Logger) Debug(message string, args ...interface{}) { FILE: ch08/02_advantages/stats/stats.go type Collector (line 8) | type Collector struct method Count (line 13) | func (c *Collector) Count(key string, value int) { method Duration (line 18) | func (c *Collector) Duration(key string, start time.Time) { FILE: ch08/03_applying/01_define_register_config.go type Config (line 10) | type Config interface FILE: ch08/03_applying/02_register_with_config_injection.go function NewRegisterer (line 13) | func NewRegisterer(cfg Config) *Registerer { type Config (line 20) | type Config interface type Registerer (line 31) | type Registerer struct method getPrice (line 36) | func (r *Registerer) getPrice(ctx context.Context, currency string) (f... method logger (line 47) | func (r *Registerer) logger() logging.Logger { FILE: ch08/03_applying/03_model_before_data_changes.go type GetterConfig (line 13) | type GetterConfig interface type Getter (line 19) | type Getter struct method Do (line 24) | func (g *Getter) Do(ID int) (*data.Person, error) { FILE: ch08/03_applying/04_test_config_link_to_config_package.go type testConfig (line 10) | type testConfig struct method Logger (line 13) | func (t *testConfig) Logger() logging.Logger { method RegistrationBasePrice (line 18) | func (t *testConfig) RegistrationBasePrice() float64 { method DataDSN (line 23) | func (t *testConfig) DataDSN() string { method ExchangeBaseURL (line 28) | func (t *testConfig) ExchangeBaseURL() string { method ExchangeAPIKey (line 33) | func (t *testConfig) ExchangeAPIKey() string { FILE: ch08/03_applying/06_simple_test_server.go type happyExchangeRateService (line 9) | type happyExchangeRateService struct method ServeHTTP (line 12) | func (*happyExchangeRateService) ServeHTTP(response http.ResponseWrite... FILE: ch08/04_disadvantages/01_leaking_details.go type PeopleFilterConfig (line 8) | type PeopleFilterConfig interface function PeopleFilter (line 12) | func PeopleFilter(cfg PeopleFilterConfig, filter string) ([]Person, erro... type PersonLoaderConfig (line 31) | type PersonLoaderConfig interface type PersonLoader (line 35) | type PersonLoader struct method LoadAll (line 37) | func (p *PersonLoader) LoadAll(cfg PersonLoaderConfig) ([]Person, erro... type Person (line 42) | type Person struct FILE: ch08/04_disadvantages/02_hiding_details.go type Loader (line 7) | type Loader interface function PeopleFilterV2 (line 11) | func PeopleFilterV2(loader Loader, filter string) ([]Person, error) { FILE: ch08/04_disadvantages/03_unclear_lifecycle.go function DoJob (line 8) | func DoJob(pool WorkerPool, job Job) error { type WorkerPool (line 25) | type WorkerPool interface type Worker (line 31) | type Worker interface type Job (line 36) | type Job interface FILE: ch08/04_disadvantages/04_clear_lifecycle.go function DoJobUpdated (line 3) | func DoJobUpdated(pool WorkerPool, job Job) error { FILE: ch08/04_disadvantages/05_layers.go function NewLayer1Object (line 3) | func NewLayer1Object(config Layer1Config) *Layer1Object { type Layer1Config (line 11) | type Layer1Config interface type Layer1Object (line 16) | type Layer1Object struct type Layer2Config (line 22) | type Layer2Config interface type Layer2Object (line 27) | type Layer2Object struct function NewLayer2Object (line 31) | func NewLayer2Object(config Layer2Config) *Layer2Object { type Logger (line 38) | type Logger interface FILE: ch08/acme/internal/config/config.go constant DefaultEnvVar (line 12) | DefaultEnvVar = "ACME_CONFIG" type Config (line 18) | type Config struct method Logger (line 39) | func (c *Config) Logger() logging.Logger { method RegistrationBasePrice (line 48) | func (c *Config) RegistrationBasePrice() float64 { method DataDSN (line 53) | func (c *Config) DataDSN() string { method ExchangeBaseURL (line 58) | func (c *Config) ExchangeBaseURL() string { method ExchangeAPIKey (line 63) | func (c *Config) ExchangeAPIKey() string { method BindAddress (line 68) | func (c *Config) BindAddress() string { function init (line 73) | func init() { function load (line 83) | func load(filename string) error { FILE: ch08/acme/internal/config/config_test.go function TestLoad (line 10) | func TestLoad(t *testing.T) { FILE: ch08/acme/internal/logging/logging.go type Logger (line 8) | type Logger interface type LoggerStdOut (line 19) | type LoggerStdOut struct method Debug (line 22) | func (l LoggerStdOut) Debug(message string, args ...interface{}) { method Info (line 27) | func (l LoggerStdOut) Info(message string, args ...interface{}) { method Warn (line 32) | func (l LoggerStdOut) Warn(message string, args ...interface{}) { method Error (line 37) | func (l LoggerStdOut) Error(message string, args ...interface{}) { FILE: ch08/acme/internal/modules/data/data.go constant defaultPersonID (line 16) | defaultPersonID = 0 constant sqlAllColumns (line 19) | sqlAllColumns = "id, fullname, phone, currency, price" constant sqlInsert (line 20) | sqlInsert = "INSERT INTO person (fullname, phone, currency, price) V... constant sqlLoadAll (line 21) | sqlLoadAll = "SELECT " + sqlAllColumns + " FROM person" constant sqlLoadByID (line 22) | sqlLoadByID = "SELECT " + sqlAllColumns + " FROM person WHERE id = ? L... type Config (line 33) | type Config interface type Person (line 55) | type Person struct function Save (line 70) | func Save(ctx context.Context, cfg Config, in *Person) (int, error) { function LoadAll (line 101) | func LoadAll(ctx context.Context, cfg Config) ([]*Person, error) { function Load (line 145) | func Load(ctx context.Context, cfg Config, ID int) (*Person, error) { type scanner (line 174) | type scanner function populatePerson (line 177) | func populatePerson(scanner scanner) (*Person, error) { FILE: ch08/acme/internal/modules/data/data_test.go function TestSave_happyPath (line 17) | func TestSave_happyPath(t *testing.T) { function TestSave_insertError (line 52) | func TestSave_insertError(t *testing.T) { function TestSave_getDBError (line 88) | func TestSave_getDBError(t *testing.T) { function TestLoadAll_tableDrivenTest (line 119) | func TestLoadAll_tableDrivenTest(t *testing.T) { function TestLoad_tableDrivenTest (line 186) | func TestLoad_tableDrivenTest(t *testing.T) { function convertSQLToRegex (line 252) | func convertSQLToRegex(in string) string { type testConfig (line 256) | type testConfig struct method Logger (line 259) | func (t *testConfig) Logger() logging.Logger { method DataDSN (line 264) | func (t *testConfig) DataDSN() string { FILE: ch08/acme/internal/modules/exchange/converter.go constant urlFormat (line 17) | urlFormat = "%s/api/historical?access_key=%s&date=2018-06-20¤cies=%s" constant defaultPrice (line 20) | defaultPrice = 0.0 function NewConverter (line 24) | func NewConverter(cfg Config) *Converter { type Config (line 31) | type Config interface type Converter (line 39) | type Converter struct method Exchange (line 44) | func (c *Converter) Exchange(ctx context.Context, basePrice float64, c... method loadRateFromServer (line 62) | func (c *Converter) loadRateFromServer(ctx context.Context, currency s... method extractRate (line 99) | func (c *Converter) extractRate(response *http.Response, currency stri... method extractResponse (line 122) | func (c *Converter) extractResponse(response *http.Response) (*apiResp... method logger (line 140) | func (c *Converter) logger() logging.Logger { type apiResponseFormat (line 145) | type apiResponseFormat struct FILE: ch08/acme/internal/modules/exchange/converter_ext_bounday_test.go function TestExternalBoundaryTest (line 14) | func TestExternalBoundaryTest(t *testing.T) { FILE: ch08/acme/internal/modules/exchange/converter_int_bounday_test.go function TestInternalBoundaryTest (line 13) | func TestInternalBoundaryTest(t *testing.T) { type happyExchangeRateService (line 33) | type happyExchangeRateService struct method ServeHTTP (line 36) | func (*happyExchangeRateService) ServeHTTP(response http.ResponseWrite... type testConfig (line 52) | type testConfig struct method Logger (line 58) | func (t *testConfig) Logger() logging.Logger { method ExchangeBaseURL (line 63) | func (t *testConfig) ExchangeBaseURL() string { method ExchangeAPIKey (line 68) | func (t *testConfig) ExchangeAPIKey() string { FILE: ch08/acme/internal/modules/get/get.go function NewGetter (line 17) | func NewGetter(cfg Config) *Getter { type Config (line 24) | type Config interface type Getter (line 31) | type Getter struct method Do (line 36) | func (g *Getter) Do(ID int) (*data.Person, error) { FILE: ch08/acme/internal/modules/get/go_test.go function TestGetter_Do_happyPath (line 13) | func TestGetter_Do_happyPath(t *testing.T) { function TestGetter_Do_noSuchPerson (line 45) | func TestGetter_Do_noSuchPerson(t *testing.T) { function TestGetter_Do_error (line 73) | func TestGetter_Do_error(t *testing.T) { FILE: ch08/acme/internal/modules/list/list.go function NewLister (line 17) | func NewLister(cfg Config) *Lister { type Config (line 24) | type Config interface type Lister (line 31) | type Lister struct method Do (line 36) | func (l *Lister) Do() ([]*data.Person, error) { method load (line 52) | func (l *Lister) load() ([]*data.Person, error) { FILE: ch08/acme/internal/modules/list/list_test.go function TestLister_Do_happyPath (line 13) | func TestLister_Do_happyPath(t *testing.T) { function TestLister_Do_noResults (line 47) | func TestLister_Do_noResults(t *testing.T) { function TestLister_Do_error (line 72) | func TestLister_Do_error(t *testing.T) { FILE: ch08/acme/internal/modules/register/register.go constant defaultPersonID (line 13) | defaultPersonID = 0 function NewRegisterer (line 37) | func NewRegisterer(cfg Config, exchanger Exchanger) *Registerer { type Exchanger (line 45) | type Exchanger interface type Config (line 51) | type Config interface type Registerer (line 63) | type Registerer struct method Do (line 69) | func (r *Registerer) Do(ctx context.Context, in *data.Person) (int, er... method validateInput (line 94) | func (r *Registerer) validateInput(in *data.Person) error { method getPrice (line 114) | func (r *Registerer) getPrice(ctx context.Context, currency string) (f... method save (line 125) | func (r *Registerer) save(ctx context.Context, in *data.Person, price ... method logger (line 135) | func (r *Registerer) logger() logging.Logger { FILE: ch08/acme/internal/modules/register/register_test.go function TestRegisterer_Do_happyPath (line 15) | func TestRegisterer_Do_happyPath(t *testing.T) { function TestRegisterer_Do_error (line 54) | func TestRegisterer_Do_error(t *testing.T) { type testConfig (line 94) | type testConfig struct method Logger (line 97) | func (t *testConfig) Logger() logging.Logger { method RegistrationBasePrice (line 102) | func (t *testConfig) RegistrationBasePrice() float64 { method DataDSN (line 107) | func (t *testConfig) DataDSN() string { type stubExchanger (line 111) | type stubExchanger struct method Exchange (line 114) | func (s stubExchanger) Exchange(ctx context.Context, basePrice float64... FILE: ch08/acme/internal/rest/get.go constant defaultPersonID (line 18) | defaultPersonID = 0 constant muxVarID (line 21) | muxVarID = "id" type GetModel (line 26) | type GetModel interface type GetConfig (line 31) | type GetConfig interface function NewGetHandler (line 36) | func NewGetHandler(cfg GetConfig, model GetModel) *GetHandler { type GetHandler (line 47) | type GetHandler struct method ServeHTTP (line 53) | func (h *GetHandler) ServeHTTP(response http.ResponseWriter, request *... method extractID (line 79) | func (h *GetHandler) extractID(request *http.Request) (int, error) { method writeJSON (line 103) | func (h *GetHandler) writeJSON(writer io.Writer, person *data.Person) ... type getResponseFormat (line 117) | type getResponseFormat struct FILE: ch08/acme/internal/rest/get_test.go function TestGetHandler_ServeHTTP (line 18) | func TestGetHandler_ServeHTTP(t *testing.T) { type testConfig (line 146) | type testConfig struct method Logger (line 149) | func (t *testConfig) Logger() logging.Logger { method BindAddress (line 153) | func (*testConfig) BindAddress() string { FILE: ch08/acme/internal/rest/list.go type ListModel (line 13) | type ListModel interface function NewListHandler (line 18) | func NewListHandler(model ListModel) *ListHandler { type ListHandler (line 26) | type ListHandler struct method ServeHTTP (line 31) | func (h *ListHandler) ServeHTTP(response http.ResponseWriter, request ... method writeJSON (line 49) | func (h *ListHandler) writeJSON(writer io.Writer, people []*data.Perso... type listResponseFormat (line 66) | type listResponseFormat struct type listResponseItemFormat (line 70) | type listResponseItemFormat struct FILE: ch08/acme/internal/rest/list_test.go function TestListHandler_ServeHTTP (line 16) | func TestListHandler_ServeHTTP(t *testing.T) { FILE: ch08/acme/internal/rest/mock_get_model_test.go type MockGetModel (line 13) | type MockGetModel struct method Do (line 18) | func (_m *MockGetModel) Do(ID int) (*data.Person, error) { FILE: ch08/acme/internal/rest/mock_list_model_test.go type MockListModel (line 13) | type MockListModel struct method Do (line 18) | func (_m *MockListModel) Do() ([]*data.Person, error) { FILE: ch08/acme/internal/rest/mock_register_model_test.go type MockRegisterModel (line 15) | type MockRegisterModel struct method Do (line 20) | func (_m *MockRegisterModel) Do(ctx context.Context, in *data.Person) ... FILE: ch08/acme/internal/rest/not_found.go function notFoundHandler (line 7) | func notFoundHandler(response http.ResponseWriter, _ *http.Request) { FILE: ch08/acme/internal/rest/not_found_test.go function TestNotFoundHandler_ServeHTTP (line 11) | func TestNotFoundHandler_ServeHTTP(t *testing.T) { FILE: ch08/acme/internal/rest/register.go type RegisterModel (line 15) | type RegisterModel interface function NewRegisterHandler (line 20) | func NewRegisterHandler(model RegisterModel) *RegisterHandler { type RegisterHandler (line 29) | type RegisterHandler struct method ServeHTTP (line 34) | func (h *RegisterHandler) ServeHTTP(response http.ResponseWriter, requ... method extractPayload (line 61) | func (h *RegisterHandler) extractPayload(request *http.Request) (*regi... method register (line 74) | func (h *RegisterHandler) register(ctx context.Context, requestPayload... type registerRequest (line 85) | type registerRequest struct FILE: ch08/acme/internal/rest/register_test.go function TestRegisterHandler_ServeHTTP (line 17) | func TestRegisterHandler_ServeHTTP(t *testing.T) { function buildValidRegisterRequest (line 113) | func buildValidRegisterRequest() io.Reader { FILE: ch08/acme/internal/rest/server.go type Config (line 11) | type Config interface function New (line 17) | func New(cfg Config, type Server (line 32) | type Server struct method Listen (line 43) | func (s *Server) Listen(stop <-chan struct{}) { method buildRouter (line 65) | func (s *Server) buildRouter() http.Handler { FILE: ch08/acme/main.go function main (line 14) | func main() { FILE: ch08/fake.go function init (line 3) | func init() { FILE: ch09/01_jit_injection/01_injecting_db.go function NewMyLoadPersonLogic (line 3) | func NewMyLoadPersonLogic(ds DataSource) *MyLoadPersonLogic { type MyLoadPersonLogic (line 9) | type MyLoadPersonLogic struct method Load (line 14) | func (m *MyLoadPersonLogic) Load(ID int) (Person, error) { type DataSource (line 18) | type DataSource interface type Person (line 23) | type Person struct FILE: ch09/01_jit_injection/01_injecting_db_test.go function TestMyLoadPersonLogic (line 9) | func TestMyLoadPersonLogic(t *testing.T) { type mockDB (line 25) | type mockDB struct method Load (line 31) | func (m *mockDB) Load(ID int) (Person, error) { FILE: ch09/01_jit_injection/02_injecting_business_logic.go function NewLoadPersonHandler (line 8) | func NewLoadPersonHandler(logic LoadPersonLogic) *LoadPersonHandler { type LoadPersonHandler (line 14) | type LoadPersonHandler struct method ServeHTTP (line 18) | func (h *LoadPersonHandler) ServeHTTP(response http.ResponseWriter, re... method extractInputFromRequest (line 31) | func (h *LoadPersonHandler) extractInputFromRequest(request *http.Requ... method writeOutput (line 36) | func (h *LoadPersonHandler) writeOutput(writer http.ResponseWriter, pe... type LoadPersonLogic (line 40) | type LoadPersonLogic interface FILE: ch09/01_jit_injection/03_injecting_db_jit.go type MyLoadPersonLogicJIT (line 7) | type MyLoadPersonLogicJIT struct method Load (line 12) | func (m *MyLoadPersonLogicJIT) Load(ID int) (Person, error) { method getDataSource (line 16) | func (m *MyLoadPersonLogicJIT) getDataSource() DataSourceJIT { type DataSourceJIT (line 24) | type DataSourceJIT interface function NewMyDataSourceJIT (line 29) | func NewMyDataSourceJIT() *MyDataSourceJIT { type MyDataSourceJIT (line 34) | type MyDataSourceJIT struct method Load (line 37) | func (m *MyDataSourceJIT) Load(ID int) (Person, error) { FILE: ch09/01_jit_injection/03_injecting_db_jit_test.go function TestMyLoadPersonLogicJIT (line 9) | func TestMyLoadPersonLogicJIT(t *testing.T) { FILE: ch09/01_jit_injection/04_noop_debugger.go type ObjectWithDebugger (line 7) | type ObjectWithDebugger struct method DoSomethingAmazing (line 11) | func (o *ObjectWithDebugger) DoSomethingAmazing(input int) error { method getDebugger (line 20) | func (o *ObjectWithDebugger) getDebugger() Debugger { method doSomething (line 28) | func (o *ObjectWithDebugger) doSomething() error { type Debugger (line 32) | type Debugger interface type noopDebugger (line 37) | type noopDebugger struct method Log (line 42) | func (n *noopDebugger) Log(_ string, args ...interface{}) { FILE: ch09/02_advantages/01_long_constructor.go function NewGenerator (line 7) | func NewGenerator(storage Storage, renderer Renderer, template io.Reader... type Generator (line 15) | type Generator struct method Generate (line 21) | func (g *Generator) Generate(destination io.Writer, params ...interfac... type Storage (line 25) | type Storage interface type Renderer (line 29) | type Renderer interface FILE: ch09/02_advantages/02_short_constructor.go function NewGeneratorV2 (line 7) | func NewGeneratorV2(template io.Reader) *Generator { method getStorage (line 13) | func (g *Generator) getStorage() Storage { method getRenderer (line 20) | func (g *Generator) getRenderer() Renderer { type DefaultStorage (line 28) | type DefaultStorage struct method Load (line 31) | func (d *DefaultStorage) Load() []interface{} { type DefaultRenderer (line 36) | type DefaultRenderer struct method Render (line 39) | func (d *DefaultRenderer) Render(template io.Reader, params ...interfa... FILE: ch09/02_advantages/03_optional_dep_without_jitdi.go function NewLoaderWithoutJIT (line 3) | func NewLoaderWithoutJIT(ds Datastore) *LoaderWithoutJIT { type LoaderWithoutJIT (line 9) | type LoaderWithoutJIT struct method Load (line 17) | func (l *LoaderWithoutJIT) Load(ID int) (*Animal, error) { type Cache (line 45) | type Cache interface type Datastore (line 50) | type Datastore interface type Animal (line 55) | type Animal struct FILE: ch09/02_advantages/04_optional_dep_with_jitdi.go function NewLoaderWithJIT (line 3) | func NewLoaderWithJIT(ds Datastore) *LoaderWithJIT { type LoaderWithJIT (line 9) | type LoaderWithJIT struct method Load (line 17) | func (l *LoaderWithJIT) Load(ID int) (*Animal, error) { method cache (line 38) | func (l *LoaderWithJIT) cache() Cache { type noopCache (line 47) | type noopCache struct method Get (line 51) | func (n *noopCache) Get(ID int) *Animal { method Put (line 56) | func (n *noopCache) Put(ID int, value *Animal) { FILE: ch09/02_advantages/05_loader.go function NewLoader (line 7) | func NewLoader(ds Datastore, cache Cache) *MyLoader { type MyLoader (line 14) | type MyLoader struct method LoadAll (line 19) | func (l *MyLoader) LoadAll() ([]interface{}, error) { FILE: ch09/02_advantages/06_global_variable/06_global_variable.go type Saver (line 6) | type Saver struct method Do (line 9) | func (s *Saver) Do(in *User) error { method validate (line 18) | func (s *Saver) validate(in *User) error { type UserStorage (line 23) | type UserStorage interface type User (line 27) | type User struct FILE: ch09/02_advantages/07_global_variable_jit/07_global_variable_jit.go type Saver (line 6) | type Saver struct method Do (line 10) | func (s *Saver) Do(in *User) error { method getStorage (line 20) | func (s *Saver) getStorage() UserStorage { method validate (line 28) | func (s *Saver) validate(in *User) error { type UserStorage (line 33) | type UserStorage interface type User (line 37) | type User struct FILE: ch09/02_advantages/07_global_variable_jit/07_global_variable_jit_test.go function TestSaver_Do (line 9) | func TestSaver_Do(t *testing.T) { type StubUserStorage (line 30) | type StubUserStorage struct method Save (line 32) | func (s *StubUserStorage) Save(_ *User) error { FILE: ch09/02_advantages/08_car_v1.go type CarV1 (line 3) | type CarV1 struct method Drive (line 7) | func (c *CarV1) Drive() { type Engine (line 14) | type Engine interface FILE: ch09/02_advantages/09_car_v2.go type CarV2 (line 3) | type CarV2 struct method Drive (line 7) | func (c *CarV2) Drive() { method getEngine (line 16) | func (c *CarV2) getEngine() Engine { function newEngine (line 24) | func newEngine() Engine { FILE: ch09/03_applying/03_initial_dao.go function NewDAO (line 11) | func NewDAO(cfg Config) *DAO { type DAO (line 21) | type DAO struct method Load (line 28) | func (d *DAO) Load(ctx context.Context, ID int) (*Person, error) { FILE: ch09/04_disadvantages/01_uncertain_init_state.go type ConnectionPool (line 10) | type ConnectionPool interface type Sender (line 16) | type Sender struct method Send (line 22) | func (l *Sender) Send(ctx context.Context, payload []byte) error { method getConnectionPool (line 45) | func (l *Sender) getConnectionPool() ConnectionPool { type myConnectionPool (line 58) | type myConnectionPool struct method IsReady (line 62) | func (m *myConnectionPool) IsReady() <-chan struct{} { method Get (line 68) | func (m *myConnectionPool) Get() net.Conn { method Release (line 74) | func (m *myConnectionPool) Release(_ net.Conn) { method init (line 78) | func (m *myConnectionPool) init() { FILE: ch09/04_disadvantages/02_certain_init_state.go method SendWithoutReadyCheck (line 3) | func (l *Sender) SendWithoutReadyCheck(payload []byte) error { FILE: ch09/04_disadvantages/03_cpool_slow_constructor.go function newConnectionPool (line 3) | func newConnectionPool() ConnectionPool { FILE: ch09/04_disadvantages/04_get_pool_with_once.go method getConnectionPoolOnce (line 3) | func (l *Sender) getConnectionPoolOnce() ConnectionPool { FILE: ch09/acme/internal/config/config.go constant DefaultEnvVar (line 12) | DefaultEnvVar = "ACME_CONFIG" type Config (line 18) | type Config struct method Logger (line 39) | func (c *Config) Logger() logging.Logger { method RegistrationBasePrice (line 48) | func (c *Config) RegistrationBasePrice() float64 { method DataDSN (line 53) | func (c *Config) DataDSN() string { method ExchangeBaseURL (line 58) | func (c *Config) ExchangeBaseURL() string { method ExchangeAPIKey (line 63) | func (c *Config) ExchangeAPIKey() string { method BindAddress (line 68) | func (c *Config) BindAddress() string { function init (line 73) | func init() { function load (line 83) | func load(filename string) error { FILE: ch09/acme/internal/config/config_test.go function TestLoad (line 10) | func TestLoad(t *testing.T) { FILE: ch09/acme/internal/logging/logging.go type Logger (line 8) | type Logger interface type LoggerStdOut (line 19) | type LoggerStdOut struct method Debug (line 22) | func (l LoggerStdOut) Debug(message string, args ...interface{}) { method Info (line 27) | func (l LoggerStdOut) Info(message string, args ...interface{}) { method Warn (line 32) | func (l LoggerStdOut) Warn(message string, args ...interface{}) { method Error (line 37) | func (l LoggerStdOut) Error(message string, args ...interface{}) { FILE: ch09/acme/internal/modules/data/dao.go function NewDAO (line 11) | func NewDAO(cfg Config) *DAO { type DAO (line 21) | type DAO struct method Load (line 31) | func (d *DAO) Load(ctx context.Context, ID int) (*Person, error) { method LoadAll (line 65) | func (d *DAO) LoadAll(ctx context.Context) ([]*Person, error) { method Save (line 111) | func (d *DAO) Save(ctx context.Context, in *Person) (int, error) { method getTracker (line 142) | func (d *DAO) getTracker() QueryTracker { FILE: ch09/acme/internal/modules/data/data.go constant defaultPersonID (line 13) | defaultPersonID = 0 constant sqlAllColumns (line 16) | sqlAllColumns = "id, fullname, phone, currency, price" constant sqlInsert (line 17) | sqlInsert = "INSERT INTO person (fullname, phone, currency, price) V... constant sqlLoadAll (line 18) | sqlLoadAll = "SELECT " + sqlAllColumns + " FROM person" constant sqlLoadByID (line 19) | sqlLoadByID = "SELECT " + sqlAllColumns + " FROM person WHERE id = ? L... type Config (line 30) | type Config interface type Person (line 52) | type Person struct type scanner (line 66) | type scanner function populatePerson (line 69) | func populatePerson(scanner scanner) (*Person, error) { FILE: ch09/acme/internal/modules/data/data_test.go function TestSave_happyPath (line 17) | func TestSave_happyPath(t *testing.T) { function TestSave_insertError (line 53) | func TestSave_insertError(t *testing.T) { function TestSave_getDBError (line 90) | func TestSave_getDBError(t *testing.T) { function TestLoadAll_tableDrivenTest (line 122) | func TestLoadAll_tableDrivenTest(t *testing.T) { function TestLoad_tableDrivenTest (line 190) | func TestLoad_tableDrivenTest(t *testing.T) { function convertSQLToRegex (line 257) | func convertSQLToRegex(in string) string { type testConfig (line 261) | type testConfig struct method Logger (line 264) | func (t *testConfig) Logger() logging.Logger { method DataDSN (line 269) | func (t *testConfig) DataDSN() string { FILE: ch09/acme/internal/modules/data/tracker.go type QueryTracker (line 10) | type QueryTracker interface type noopTracker (line 16) | type noopTracker struct method Track (line 19) | func (_ *noopTracker) Track(_ string, _ time.Time) { function NewLogTracker (line 24) | func NewLogTracker(logger logging.Logger) *LogTracker { type LogTracker (line 31) | type LogTracker struct method Track (line 36) | func (l *LogTracker) Track(key string, start time.Time) { FILE: ch09/acme/internal/modules/exchange/converter.go constant urlFormat (line 17) | urlFormat = "%s/api/historical?access_key=%s&date=2018-06-20¤cies=%s" constant defaultPrice (line 20) | defaultPrice = 0.0 function NewConverter (line 24) | func NewConverter(cfg Config) *Converter { type Config (line 31) | type Config interface type Converter (line 39) | type Converter struct method Exchange (line 44) | func (c *Converter) Exchange(ctx context.Context, basePrice float64, c... method loadRateFromServer (line 62) | func (c *Converter) loadRateFromServer(ctx context.Context, currency s... method extractRate (line 99) | func (c *Converter) extractRate(response *http.Response, currency stri... method extractResponse (line 122) | func (c *Converter) extractResponse(response *http.Response) (*apiResp... method logger (line 140) | func (c *Converter) logger() logging.Logger { type apiResponseFormat (line 145) | type apiResponseFormat struct FILE: ch09/acme/internal/modules/exchange/converter_ext_bounday_test.go function TestExternalBoundaryTest (line 14) | func TestExternalBoundaryTest(t *testing.T) { FILE: ch09/acme/internal/modules/exchange/converter_int_bounday_test.go function TestInternalBoundaryTest (line 13) | func TestInternalBoundaryTest(t *testing.T) { type happyExchangeRateService (line 33) | type happyExchangeRateService struct method ServeHTTP (line 36) | func (*happyExchangeRateService) ServeHTTP(response http.ResponseWrite... type testConfig (line 52) | type testConfig struct method Logger (line 58) | func (t *testConfig) Logger() logging.Logger { method ExchangeBaseURL (line 63) | func (t *testConfig) ExchangeBaseURL() string { method ExchangeAPIKey (line 68) | func (t *testConfig) ExchangeAPIKey() string { FILE: ch09/acme/internal/modules/get/get.go function NewGetter (line 17) | func NewGetter(cfg Config) *Getter { type Config (line 24) | type Config interface type Getter (line 31) | type Getter struct method Do (line 37) | func (g *Getter) Do(ID int) (*data.Person, error) { method getLoader (line 51) | func (g *Getter) getLoader() myLoader { type myLoader (line 60) | type myLoader interface FILE: ch09/acme/internal/modules/get/go_test.go function TestGetter_Do_happyPath (line 13) | func TestGetter_Do_happyPath(t *testing.T) { function TestGetter_Do_noSuchPerson (line 38) | func TestGetter_Do_noSuchPerson(t *testing.T) { function TestGetter_Do_error (line 58) | func TestGetter_Do_error(t *testing.T) { FILE: ch09/acme/internal/modules/get/mock_my_loader_test.go type mockMyLoader (line 15) | type mockMyLoader struct method Load (line 20) | func (_m *mockMyLoader) Load(ctx context.Context, ID int) (*data.Perso... FILE: ch09/acme/internal/modules/list/list.go function NewLister (line 17) | func NewLister(cfg Config) *Lister { type Config (line 24) | type Config interface type Lister (line 31) | type Lister struct method Do (line 37) | func (l *Lister) Do() ([]*data.Person, error) { method load (line 53) | func (l *Lister) load() ([]*data.Person, error) { method getLoader (line 66) | func (l *Lister) getLoader() myLoader { type myLoader (line 78) | type myLoader interface FILE: ch09/acme/internal/modules/list/list_test.go function TestLister_Do_happyPath (line 13) | func TestLister_Do_happyPath(t *testing.T) { function TestLister_Do_noResults (line 41) | func TestLister_Do_noResults(t *testing.T) { function TestLister_Do_error (line 58) | func TestLister_Do_error(t *testing.T) { FILE: ch09/acme/internal/modules/list/mock_my_loader_test.go type mockMyLoader (line 15) | type mockMyLoader struct method LoadAll (line 20) | func (_m *mockMyLoader) LoadAll(ctx context.Context) ([]*data.Person, ... FILE: ch09/acme/internal/modules/register/mock_my_saver_test.go type mockMySaver (line 15) | type mockMySaver struct method Save (line 20) | func (_m *mockMySaver) Save(ctx context.Context, in *data.Person) (int... FILE: ch09/acme/internal/modules/register/register.go constant defaultPersonID (line 13) | defaultPersonID = 0 function NewRegisterer (line 37) | func NewRegisterer(cfg Config, exchanger Exchanger) *Registerer { type Exchanger (line 45) | type Exchanger interface type Config (line 51) | type Config interface type Registerer (line 63) | type Registerer struct method Do (line 70) | func (r *Registerer) Do(ctx context.Context, in *data.Person) (int, er... method validateInput (line 95) | func (r *Registerer) validateInput(in *data.Person) error { method getPrice (line 115) | func (r *Registerer) getPrice(ctx context.Context, currency string) (f... method save (line 126) | func (r *Registerer) save(ctx context.Context, in *data.Person, price ... method getSaver (line 136) | func (r *Registerer) getSaver() mySaver { method logger (line 144) | func (r *Registerer) logger() logging.Logger { type mySaver (line 149) | type mySaver interface FILE: ch09/acme/internal/modules/register/register_test.go function TestRegisterer_Do_happyPath (line 16) | func TestRegisterer_Do_happyPath(t *testing.T) { function TestRegisterer_Do_error (line 48) | func TestRegisterer_Do_error(t *testing.T) { type testConfig (line 79) | type testConfig struct method Logger (line 82) | func (t *testConfig) Logger() logging.Logger { method RegistrationBasePrice (line 87) | func (t *testConfig) RegistrationBasePrice() float64 { method DataDSN (line 92) | func (t *testConfig) DataDSN() string { type stubExchanger (line 96) | type stubExchanger struct method Exchange (line 99) | func (s stubExchanger) Exchange(ctx context.Context, basePrice float64... FILE: ch09/acme/internal/rest/get.go constant defaultPersonID (line 18) | defaultPersonID = 0 constant muxVarID (line 21) | muxVarID = "id" type GetModel (line 26) | type GetModel interface type GetConfig (line 31) | type GetConfig interface function NewGetHandler (line 36) | func NewGetHandler(cfg GetConfig, model GetModel) *GetHandler { type GetHandler (line 47) | type GetHandler struct method ServeHTTP (line 53) | func (h *GetHandler) ServeHTTP(response http.ResponseWriter, request *... method extractID (line 79) | func (h *GetHandler) extractID(request *http.Request) (int, error) { method writeJSON (line 103) | func (h *GetHandler) writeJSON(writer io.Writer, person *data.Person) ... type getResponseFormat (line 117) | type getResponseFormat struct FILE: ch09/acme/internal/rest/get_test.go function TestGetHandler_ServeHTTP (line 18) | func TestGetHandler_ServeHTTP(t *testing.T) { type testConfig (line 146) | type testConfig struct method Logger (line 149) | func (t *testConfig) Logger() logging.Logger { method BindAddress (line 153) | func (*testConfig) BindAddress() string { FILE: ch09/acme/internal/rest/list.go type ListModel (line 13) | type ListModel interface function NewListHandler (line 18) | func NewListHandler(model ListModel) *ListHandler { type ListHandler (line 26) | type ListHandler struct method ServeHTTP (line 31) | func (h *ListHandler) ServeHTTP(response http.ResponseWriter, request ... method writeJSON (line 49) | func (h *ListHandler) writeJSON(writer io.Writer, people []*data.Perso... type listResponseFormat (line 66) | type listResponseFormat struct type listResponseItemFormat (line 70) | type listResponseItemFormat struct FILE: ch09/acme/internal/rest/list_test.go function TestListHandler_ServeHTTP (line 16) | func TestListHandler_ServeHTTP(t *testing.T) { FILE: ch09/acme/internal/rest/mock_get_model_test.go type MockGetModel (line 13) | type MockGetModel struct method Do (line 18) | func (_m *MockGetModel) Do(ID int) (*data.Person, error) { FILE: ch09/acme/internal/rest/mock_list_model_test.go type MockListModel (line 13) | type MockListModel struct method Do (line 18) | func (_m *MockListModel) Do() ([]*data.Person, error) { FILE: ch09/acme/internal/rest/mock_register_model_test.go type MockRegisterModel (line 15) | type MockRegisterModel struct method Do (line 20) | func (_m *MockRegisterModel) Do(ctx context.Context, in *data.Person) ... FILE: ch09/acme/internal/rest/not_found.go function notFoundHandler (line 7) | func notFoundHandler(response http.ResponseWriter, _ *http.Request) { FILE: ch09/acme/internal/rest/not_found_test.go function TestNotFoundHandler_ServeHTTP (line 11) | func TestNotFoundHandler_ServeHTTP(t *testing.T) { FILE: ch09/acme/internal/rest/register.go type RegisterModel (line 15) | type RegisterModel interface function NewRegisterHandler (line 20) | func NewRegisterHandler(model RegisterModel) *RegisterHandler { type RegisterHandler (line 29) | type RegisterHandler struct method ServeHTTP (line 34) | func (h *RegisterHandler) ServeHTTP(response http.ResponseWriter, requ... method extractPayload (line 61) | func (h *RegisterHandler) extractPayload(request *http.Request) (*regi... method register (line 74) | func (h *RegisterHandler) register(ctx context.Context, requestPayload... type registerRequest (line 85) | type registerRequest struct FILE: ch09/acme/internal/rest/register_test.go function TestRegisterHandler_ServeHTTP (line 17) | func TestRegisterHandler_ServeHTTP(t *testing.T) { function buildValidRegisterRequest (line 113) | func buildValidRegisterRequest() io.Reader { FILE: ch09/acme/internal/rest/server.go type Config (line 11) | type Config interface function New (line 17) | func New(cfg Config, type Server (line 32) | type Server struct method Listen (line 43) | func (s *Server) Listen(stop <-chan struct{}) { method buildRouter (line 65) | func (s *Server) buildRouter() http.Handler { FILE: ch09/acme/main.go function main (line 14) | func main() { FILE: ch09/fake.go function init (line 3) | func init() { FILE: ch10/01_intro_to_wire/01_simple/main.go function main (line 10) | func main() { function ProvideFetcher (line 21) | func ProvideFetcher() *Fetcher { type Fetcher (line 26) | type Fetcher struct method GoFetch (line 29) | func (f *Fetcher) GoFetch() (string, error) { FILE: ch10/01_intro_to_wire/01_simple/wire.go function initializeDeps (line 11) | func initializeDeps() *Fetcher { FILE: ch10/01_intro_to_wire/01_simple/wire_gen.go function initializeDeps (line 10) | func initializeDeps() *Fetcher { FILE: ch10/01_intro_to_wire/02_params/main.go function main (line 10) | func main() { function ProvideFetcher (line 21) | func ProvideFetcher(cache *Cache) *Fetcher { function ProvideCache (line 27) | func ProvideCache() *Cache { type Cache (line 31) | type Cache struct method Get (line 33) | func (c *Cache) Get(key string) (string, error) { method Set (line 37) | func (c *Cache) Set(key string, value string) error { type Fetcher (line 41) | type Fetcher struct method GoFetch (line 45) | func (f *Fetcher) GoFetch() (string, error) { FILE: ch10/01_intro_to_wire/02_params/wire.go function initializeDeps (line 11) | func initializeDeps() *Fetcher { FILE: ch10/01_intro_to_wire/02_params/wire_gen.go function initializeDeps (line 10) | func initializeDeps() *Fetcher { FILE: ch10/01_intro_to_wire/03_error/main.go function main (line 10) | func main() { function ProvideFetcher (line 24) | func ProvideFetcher(cache *Cache) *Fetcher { function ProvideCache (line 30) | func ProvideCache() (*Cache, error) { type Cache (line 41) | type Cache struct method Start (line 43) | func (c *Cache) Start() error { method Get (line 47) | func (c *Cache) Get(key string) (string, error) { method Set (line 51) | func (c *Cache) Set(key string, value string) error { type Fetcher (line 55) | type Fetcher struct method GoFetch (line 59) | func (f *Fetcher) GoFetch() (string, error) { FILE: ch10/01_intro_to_wire/03_error/wire.go function initializeDeps (line 11) | func initializeDeps() (*Fetcher, error) { FILE: ch10/01_intro_to_wire/03_error/wire_gen.go function initializeDeps (line 10) | func initializeDeps() (*Fetcher, error) { FILE: ch10/01_intro_to_wire/04_without_pset/main.go function main (line 11) | func main() { FILE: ch10/01_intro_to_wire/04_without_pset/wire.go function initializeServer (line 20) | func initializeServer() (*rest.Server, error) { FILE: ch10/01_intro_to_wire/04_without_pset/wire_gen.go function initializeServer (line 22) | func initializeServer() (*rest.Server, error) { FILE: ch10/02_advantages/01_dig/main.go function main (line 19) | func main() { function BuildContainer (line 36) | func BuildContainer() *dig.Container { FILE: ch10/02_advantages/02_instantiation_order/handler.go function NewGetPersonHandler (line 7) | func NewGetPersonHandler(model *GetPersonModel) *GetPersonHandler { type GetPersonHandler (line 13) | type GetPersonHandler struct method ServeHTTP (line 17) | func (g *GetPersonHandler) ServeHTTP(response http.ResponseWriter, req... FILE: ch10/02_advantages/02_instantiation_order/injectors.go function initializeDeps (line 11) | func initializeDeps() *GetPersonHandler { FILE: ch10/02_advantages/02_instantiation_order/main.go function main (line 3) | func main() { FILE: ch10/02_advantages/02_instantiation_order/model.go function NewGetPersonModel (line 8) | func NewGetPersonModel(db *sql.DB) *GetPersonModel { type GetPersonModel (line 14) | type GetPersonModel struct method LoadByID (line 18) | func (g *GetPersonModel) LoadByID(ID int) (*Person, error) { type Person (line 22) | type Person struct FILE: ch10/02_advantages/02_instantiation_order/providers.go function ProvideHandler (line 9) | func ProvideHandler(model *GetPersonModel) *GetPersonHandler { function ProvideModel (line 15) | func ProvideModel(db *sql.DB) *GetPersonModel { function ProvideDatabase (line 21) | func ProvideDatabase() *sql.DB { FILE: ch10/02_advantages/02_instantiation_order/wire_gen.go function initializeDeps (line 10) | func initializeDeps() *GetPersonHandler { FILE: ch10/03_applying/01_before_config/main.go function main (line 18) | func main() { FILE: ch10/03_applying/02_after_config/main.go function main (line 17) | func main() { FILE: ch10/03_applying/02_after_config/wire.go function initializeConfig (line 15) | func initializeConfig() (*config.Config, error) { FILE: ch10/03_applying/02_after_config/wire_gen.go function initializeConfig (line 17) | func initializeConfig() (*config.Config, error) { FILE: ch10/03_applying/03_after_exchange/main.go function main (line 19) | func main() { FILE: ch10/03_applying/03_after_exchange/wire.go function initializeConfig (line 16) | func initializeConfig() (*config.Config, error) { function initializeExchanger (line 21) | func initializeExchanger() (*exchange.Converter, error) { FILE: ch10/03_applying/04_after_model/main.go function main (line 19) | func main() { FILE: ch10/03_applying/04_after_model/wire.go function initializeConfig (line 18) | func initializeConfig() (*config.Config, error) { function initializeGetter (line 23) | func initializeGetter() (*get.Getter, error) { function initializeLister (line 28) | func initializeLister() (*list.Lister, error) { function initializeRegisterer (line 33) | func initializeRegisterer() (*register.Registerer, error) { FILE: ch10/03_applying/05_after_rest/main.go function main (line 19) | func main() { FILE: ch10/03_applying/05_after_rest/wire.go function initializeServer (line 15) | func initializeServer() (*rest.Server, error) { FILE: ch10/03_applying/05_after_rest/wire_gen.go function initializeServer (line 22) | func initializeServer() (*rest.Server, error) { FILE: ch10/03_applying/06_build_tag.go function sayHello (line 9) | func sayHello() { FILE: ch10/03_applying/06_build_tag_inverse.go function sayHello (line 9) | func sayHello() { FILE: ch10/03_applying/06_main.go function main (line 3) | func main() { FILE: ch10/04_disadvantages/01_complexity/main.go constant configFile (line 11) | configFile = "config.json" function main (line 14) | func main() { type Config (line 57) | type Config struct type Logger (line 61) | type Logger struct method Debug (line 65) | func (l *Logger) Debug(msg string, args ...interface{}) { method Warn (line 69) | func (l *Logger) Warn(msg string, args ...interface{}) { method Error (line 73) | func (l *Logger) Error(msg string, args ...interface{}) { type Server (line 77) | type Server struct method Listen (line 81) | func (s *Server) Listen() { FILE: ch10/acme/internal/config/config.go constant DefaultEnvVar (line 13) | DefaultEnvVar = "ACME_CONFIG" type Config (line 16) | type Config struct method Logger (line 37) | func (c *Config) Logger() logging.Logger { method RegistrationBasePrice (line 46) | func (c *Config) RegistrationBasePrice() float64 { method DataDSN (line 51) | func (c *Config) DataDSN() string { method ExchangeBaseURL (line 56) | func (c *Config) ExchangeBaseURL() string { method ExchangeAPIKey (line 61) | func (c *Config) ExchangeAPIKey() string { method BindAddress (line 66) | func (c *Config) BindAddress() string { function Load (line 71) | func Load() (*Config, error) { function load (line 88) | func load(filename string) (*Config, error) { FILE: ch10/acme/internal/config/config_test.go function TestLoad (line 10) | func TestLoad(t *testing.T) { FILE: ch10/acme/internal/logging/logging.go type Logger (line 8) | type Logger interface type LoggerStdOut (line 19) | type LoggerStdOut struct method Debug (line 22) | func (l LoggerStdOut) Debug(message string, args ...interface{}) { method Info (line 27) | func (l LoggerStdOut) Info(message string, args ...interface{}) { method Warn (line 32) | func (l LoggerStdOut) Warn(message string, args ...interface{}) { method Error (line 37) | func (l LoggerStdOut) Error(message string, args ...interface{}) { FILE: ch10/acme/internal/modules/data/dao.go function NewDAO (line 11) | func NewDAO(cfg Config) *DAO { type DAO (line 21) | type DAO struct method Load (line 31) | func (d *DAO) Load(ctx context.Context, ID int) (*Person, error) { method LoadAll (line 65) | func (d *DAO) LoadAll(ctx context.Context) ([]*Person, error) { method Save (line 111) | func (d *DAO) Save(ctx context.Context, in *Person) (int, error) { method getTracker (line 142) | func (d *DAO) getTracker() QueryTracker { FILE: ch10/acme/internal/modules/data/data.go constant defaultPersonID (line 13) | defaultPersonID = 0 constant sqlAllColumns (line 16) | sqlAllColumns = "id, fullname, phone, currency, price" constant sqlInsert (line 17) | sqlInsert = "INSERT INTO person (fullname, phone, currency, price) V... constant sqlLoadAll (line 18) | sqlLoadAll = "SELECT " + sqlAllColumns + " FROM person" constant sqlLoadByID (line 19) | sqlLoadByID = "SELECT " + sqlAllColumns + " FROM person WHERE id = ? L... type Config (line 30) | type Config interface type Person (line 52) | type Person struct type scanner (line 66) | type scanner function populatePerson (line 69) | func populatePerson(scanner scanner) (*Person, error) { FILE: ch10/acme/internal/modules/data/data_test.go function TestSave_happyPath (line 17) | func TestSave_happyPath(t *testing.T) { function TestSave_insertError (line 53) | func TestSave_insertError(t *testing.T) { function TestSave_getDBError (line 90) | func TestSave_getDBError(t *testing.T) { function TestLoadAll_tableDrivenTest (line 122) | func TestLoadAll_tableDrivenTest(t *testing.T) { function TestLoad_tableDrivenTest (line 190) | func TestLoad_tableDrivenTest(t *testing.T) { function convertSQLToRegex (line 257) | func convertSQLToRegex(in string) string { type testConfig (line 261) | type testConfig struct method Logger (line 264) | func (t *testConfig) Logger() logging.Logger { method DataDSN (line 269) | func (t *testConfig) DataDSN() string { FILE: ch10/acme/internal/modules/data/tracker.go type QueryTracker (line 10) | type QueryTracker interface type noopTracker (line 16) | type noopTracker struct method Track (line 19) | func (_ *noopTracker) Track(_ string, _ time.Time) { function NewLogTracker (line 24) | func NewLogTracker(logger logging.Logger) *LogTracker { type LogTracker (line 31) | type LogTracker struct method Track (line 36) | func (l *LogTracker) Track(key string, start time.Time) { FILE: ch10/acme/internal/modules/exchange/converter.go constant urlFormat (line 17) | urlFormat = "%s/api/historical?access_key=%s&date=2018-06-20¤cies=%s" constant defaultPrice (line 20) | defaultPrice = 0.0 function NewConverter (line 24) | func NewConverter(cfg Config) *Converter { type Config (line 31) | type Config interface type Converter (line 39) | type Converter struct method Exchange (line 44) | func (c *Converter) Exchange(ctx context.Context, basePrice float64, c... method loadRateFromServer (line 62) | func (c *Converter) loadRateFromServer(ctx context.Context, currency s... method extractRate (line 99) | func (c *Converter) extractRate(response *http.Response, currency stri... method extractResponse (line 122) | func (c *Converter) extractResponse(response *http.Response) (*apiResp... method logger (line 140) | func (c *Converter) logger() logging.Logger { type apiResponseFormat (line 145) | type apiResponseFormat struct FILE: ch10/acme/internal/modules/exchange/converter_ext_bounday_test.go function TestExternalBoundaryTest (line 14) | func TestExternalBoundaryTest(t *testing.T) { FILE: ch10/acme/internal/modules/exchange/converter_int_bounday_test.go function TestInternalBoundaryTest (line 13) | func TestInternalBoundaryTest(t *testing.T) { type happyExchangeRateService (line 33) | type happyExchangeRateService struct method ServeHTTP (line 36) | func (*happyExchangeRateService) ServeHTTP(response http.ResponseWrite... type testConfig (line 52) | type testConfig struct method Logger (line 58) | func (t *testConfig) Logger() logging.Logger { method ExchangeBaseURL (line 63) | func (t *testConfig) ExchangeBaseURL() string { method ExchangeAPIKey (line 68) | func (t *testConfig) ExchangeAPIKey() string { FILE: ch10/acme/internal/modules/get/get.go function NewGetter (line 17) | func NewGetter(cfg Config) *Getter { type Config (line 24) | type Config interface type Getter (line 31) | type Getter struct method Do (line 37) | func (g *Getter) Do(ID int) (*data.Person, error) { method getLoader (line 51) | func (g *Getter) getLoader() myLoader { type myLoader (line 60) | type myLoader interface FILE: ch10/acme/internal/modules/get/go_test.go function TestGetter_Do_happyPath (line 13) | func TestGetter_Do_happyPath(t *testing.T) { function TestGetter_Do_noSuchPerson (line 38) | func TestGetter_Do_noSuchPerson(t *testing.T) { function TestGetter_Do_error (line 58) | func TestGetter_Do_error(t *testing.T) { FILE: ch10/acme/internal/modules/get/mock_my_loader_test.go type mockMyLoader (line 15) | type mockMyLoader struct method Load (line 20) | func (_m *mockMyLoader) Load(ctx context.Context, ID int) (*data.Perso... FILE: ch10/acme/internal/modules/list/list.go function NewLister (line 17) | func NewLister(cfg Config) *Lister { type Config (line 24) | type Config interface type Lister (line 31) | type Lister struct method Do (line 37) | func (l *Lister) Do() ([]*data.Person, error) { method load (line 53) | func (l *Lister) load() ([]*data.Person, error) { method getLoader (line 66) | func (l *Lister) getLoader() myLoader { type myLoader (line 78) | type myLoader interface FILE: ch10/acme/internal/modules/list/list_test.go function TestLister_Do_happyPath (line 13) | func TestLister_Do_happyPath(t *testing.T) { function TestLister_Do_noResults (line 41) | func TestLister_Do_noResults(t *testing.T) { function TestLister_Do_error (line 58) | func TestLister_Do_error(t *testing.T) { FILE: ch10/acme/internal/modules/list/mock_my_loader_test.go type mockMyLoader (line 15) | type mockMyLoader struct method LoadAll (line 20) | func (_m *mockMyLoader) LoadAll(ctx context.Context) ([]*data.Person, ... FILE: ch10/acme/internal/modules/register/mock_my_saver_test.go type mockMySaver (line 15) | type mockMySaver struct method Save (line 20) | func (_m *mockMySaver) Save(ctx context.Context, in *data.Person) (int... FILE: ch10/acme/internal/modules/register/register.go constant defaultPersonID (line 13) | defaultPersonID = 0 function NewRegisterer (line 37) | func NewRegisterer(cfg Config, exchanger Exchanger) *Registerer { type Exchanger (line 45) | type Exchanger interface type Config (line 51) | type Config interface type Registerer (line 63) | type Registerer struct method Do (line 70) | func (r *Registerer) Do(ctx context.Context, in *data.Person) (int, er... method validateInput (line 95) | func (r *Registerer) validateInput(in *data.Person) error { method getPrice (line 115) | func (r *Registerer) getPrice(ctx context.Context, currency string) (f... method save (line 126) | func (r *Registerer) save(ctx context.Context, in *data.Person, price ... method getSaver (line 136) | func (r *Registerer) getSaver() mySaver { method logger (line 144) | func (r *Registerer) logger() logging.Logger { type mySaver (line 149) | type mySaver interface FILE: ch10/acme/internal/modules/register/register_test.go function TestRegisterer_Do_happyPath (line 16) | func TestRegisterer_Do_happyPath(t *testing.T) { function TestRegisterer_Do_error (line 48) | func TestRegisterer_Do_error(t *testing.T) { type testConfig (line 79) | type testConfig struct method Logger (line 82) | func (t *testConfig) Logger() logging.Logger { method RegistrationBasePrice (line 87) | func (t *testConfig) RegistrationBasePrice() float64 { method DataDSN (line 92) | func (t *testConfig) DataDSN() string { type stubExchanger (line 96) | type stubExchanger struct method Exchange (line 99) | func (s stubExchanger) Exchange(ctx context.Context, basePrice float64... FILE: ch10/acme/internal/rest/get.go constant defaultPersonID (line 18) | defaultPersonID = 0 constant muxVarID (line 21) | muxVarID = "id" type GetModel (line 26) | type GetModel interface type GetConfig (line 31) | type GetConfig interface function NewGetHandler (line 36) | func NewGetHandler(cfg GetConfig, model GetModel) *GetHandler { type GetHandler (line 47) | type GetHandler struct method ServeHTTP (line 53) | func (h *GetHandler) ServeHTTP(response http.ResponseWriter, request *... method extractID (line 79) | func (h *GetHandler) extractID(request *http.Request) (int, error) { method writeJSON (line 103) | func (h *GetHandler) writeJSON(writer io.Writer, person *data.Person) ... type getResponseFormat (line 117) | type getResponseFormat struct FILE: ch10/acme/internal/rest/get_test.go function TestGetHandler_ServeHTTP (line 18) | func TestGetHandler_ServeHTTP(t *testing.T) { type testConfig (line 146) | type testConfig struct method Logger (line 149) | func (t *testConfig) Logger() logging.Logger { method BindAddress (line 153) | func (*testConfig) BindAddress() string { FILE: ch10/acme/internal/rest/list.go type ListModel (line 13) | type ListModel interface function NewListHandler (line 18) | func NewListHandler(model ListModel) *ListHandler { type ListHandler (line 26) | type ListHandler struct method ServeHTTP (line 31) | func (h *ListHandler) ServeHTTP(response http.ResponseWriter, request ... method writeJSON (line 49) | func (h *ListHandler) writeJSON(writer io.Writer, people []*data.Perso... type listResponseFormat (line 66) | type listResponseFormat struct type listResponseItemFormat (line 70) | type listResponseItemFormat struct FILE: ch10/acme/internal/rest/list_test.go function TestListHandler_ServeHTTP (line 16) | func TestListHandler_ServeHTTP(t *testing.T) { FILE: ch10/acme/internal/rest/mock_get_model_test.go type MockGetModel (line 13) | type MockGetModel struct method Do (line 18) | func (_m *MockGetModel) Do(ID int) (*data.Person, error) { FILE: ch10/acme/internal/rest/mock_list_model_test.go type MockListModel (line 13) | type MockListModel struct method Do (line 18) | func (_m *MockListModel) Do() ([]*data.Person, error) { FILE: ch10/acme/internal/rest/mock_register_model_test.go type MockRegisterModel (line 15) | type MockRegisterModel struct method Do (line 20) | func (_m *MockRegisterModel) Do(ctx context.Context, in *data.Person) ... FILE: ch10/acme/internal/rest/not_found.go function notFoundHandler (line 7) | func notFoundHandler(response http.ResponseWriter, _ *http.Request) { FILE: ch10/acme/internal/rest/not_found_test.go function TestNotFoundHandler_ServeHTTP (line 11) | func TestNotFoundHandler_ServeHTTP(t *testing.T) { FILE: ch10/acme/internal/rest/register.go type RegisterModel (line 15) | type RegisterModel interface function NewRegisterHandler (line 20) | func NewRegisterHandler(model RegisterModel) *RegisterHandler { type RegisterHandler (line 29) | type RegisterHandler struct method ServeHTTP (line 34) | func (h *RegisterHandler) ServeHTTP(response http.ResponseWriter, requ... method extractPayload (line 61) | func (h *RegisterHandler) extractPayload(request *http.Request) (*regi... method register (line 74) | func (h *RegisterHandler) register(ctx context.Context, requestPayload... type registerRequest (line 85) | type registerRequest struct FILE: ch10/acme/internal/rest/register_test.go function TestRegisterHandler_ServeHTTP (line 17) | func TestRegisterHandler_ServeHTTP(t *testing.T) { function buildValidRegisterRequest (line 113) | func buildValidRegisterRequest() io.Reader { FILE: ch10/acme/internal/rest/server.go type Config (line 11) | type Config interface function New (line 17) | func New(cfg Config, type Server (line 32) | type Server struct method Listen (line 43) | func (s *Server) Listen(stop <-chan struct{}) { method buildRouter (line 65) | func (s *Server) buildRouter() http.Handler { FILE: ch10/acme/main.go function main (line 16) | func main() { FILE: ch10/acme/main_test.go function TestRegister (line 18) | func TestRegister(t *testing.T) { function TestGet (line 46) | func TestGet(t *testing.T) { function TestList (line 65) | func TestList(t *testing.T) { function startTestServer (line 84) | func startTestServer(t *testing.T, ctx context.Context) string { function getFreePort (line 110) | func getFreePort() (string, error) { function getPort (line 139) | func getPort(addr fmt.Stringer) (string, error) { FILE: ch10/acme/wire.go function initializeServer (line 16) | func initializeServer() (*rest.Server, error) { function initializeServerCustomConfig (line 21) | func initializeServerCustomConfig(_ exchange.Config, _ get.Config, _ lis... FILE: ch10/acme/wire_gen.go function initializeServer (line 19) | func initializeServer() (*rest.Server, error) { function initializeServerCustomConfig (line 32) | func initializeServerCustomConfig(exchangeConfig exchange.Config, getCon... FILE: ch10/fake.go function init (line 3) | func init() { FILE: ch11/01_di_induced_damage/01_long_param/01_long_param.go function NewMyHandler (line 8) | func NewMyHandler(logger Logger, stats Instrumentation, type MyHandler (line 19) | type MyHandler struct method ServeHTTP (line 23) | func (m *MyHandler) ServeHTTP(response http.ResponseWriter, request *h... type Logger (line 28) | type Logger interface type Instrumentation (line 36) | type Instrumentation interface type Parser (line 42) | type Parser interface type Formatter (line 47) | type Formatter interface type RateLimiter (line 52) | type RateLimiter interface type Datastore (line 58) | type Datastore interface type Cache (line 63) | type Cache interface FILE: ch11/01_di_induced_damage/02_long_param/01_long_param.go function NewMyHandler (line 8) | func NewMyHandler(logger Logger, stats Instrumentation, type MyHandler (line 19) | type MyHandler struct method ServeHTTP (line 23) | func (m *MyHandler) ServeHTTP(response http.ResponseWriter, request *h... type Logger (line 28) | type Logger interface type Instrumentation (line 36) | type Instrumentation interface type Parser (line 42) | type Parser interface type Formatter (line 47) | type Formatter interface type RateLimiter (line 52) | type RateLimiter interface type Loader (line 58) | type Loader interface FILE: ch11/01_di_induced_damage/03_long_param/01_long_param.go function NewMyHandler (line 8) | func NewMyHandler(config Config, type MyHandler (line 23) | type MyHandler struct method ServeHTTP (line 31) | func (m *MyHandler) ServeHTTP(response http.ResponseWriter, request *h... type Config (line 52) | type Config interface type Logger (line 58) | type Logger interface type Instrumentation (line 66) | type Instrumentation interface type Parser (line 72) | type Parser interface type Formatter (line 77) | type Formatter interface type RateLimiter (line 82) | type RateLimiter interface type Loader (line 88) | type Loader interface FILE: ch11/01_di_induced_damage/04_long_param/01_long_param.go function NewFancyFormatHandler (line 8) | func NewFancyFormatHandler(config Config, type FancyFormatHandler (line 25) | type FancyFormatHandler struct type MyHandler (line 30) | type MyHandler struct method ServeHTTP (line 38) | func (m *MyHandler) ServeHTTP(response http.ResponseWriter, request *h... type Config (line 59) | type Config interface type Logger (line 65) | type Logger interface type Instrumentation (line 73) | type Instrumentation interface type Parser (line 79) | type Parser interface type Formatter (line 84) | type Formatter interface type FancyFormatter (line 89) | type FancyFormatter struct method Format (line 91) | func (f *FancyFormatter) Format(response http.ResponseWriter, data []b... type RateLimiter (line 98) | type RateLimiter interface type Loader (line 104) | type Loader interface FILE: ch11/01_di_induced_damage/04_long_param/01_long_param_test.go function TestNewFancyFormatHandler (line 12) | func TestNewFancyFormatHandler(t *testing.T) { type stubConfig (line 33) | type stubConfig struct method Logger (line 35) | func (s *stubConfig) Logger() Logger { method Instrumentation (line 39) | func (s *stubConfig) Instrumentation() Instrumentation { type stubLogger (line 43) | type stubLogger struct method Error (line 45) | func (s *stubLogger) Error(message string, args ...interface{}) { method Warn (line 49) | func (s *stubLogger) Warn(message string, args ...interface{}) { method Info (line 53) | func (s *stubLogger) Info(message string, args ...interface{}) { method Debug (line 57) | func (s *stubLogger) Debug(message string, args ...interface{}) { type stubInstrumentation (line 61) | type stubInstrumentation struct method Count (line 63) | func (s *stubInstrumentation) Count(key string, value int) { method Duration (line 67) | func (s *stubInstrumentation) Duration(key string, start time.Time) { type stubParser (line 71) | type stubParser struct method Extract (line 73) | func (s *stubParser) Extract(req *http.Request) (int, error) { type stubRateLimiter (line 77) | type stubRateLimiter struct method Acquire (line 79) | func (s *stubRateLimiter) Acquire() { method Release (line 83) | func (s *stubRateLimiter) Release() { type stubLoader (line 87) | type stubLoader struct method Load (line 89) | func (s *stubLoader) Load(ID int) ([]byte, error) { FILE: ch11/01_di_induced_damage/05_inject_sql/01_interface.go type Connection (line 8) | type Connection interface FILE: ch11/01_di_induced_damage/06_inject_sql/01_interface.go type Database (line 7) | type Database interface type Row (line 13) | type Row interface type Rows (line 17) | type Rows interface type Result (line 23) | type Result interface FILE: ch11/01_di_induced_damage/06_inject_sql/02_implementation.go type DatabaseImpl (line 8) | type DatabaseImpl struct method QueryRowContext (line 12) | func (c *DatabaseImpl) QueryRowContext(ctx context.Context, query stri... method QueryContext (line 16) | func (c *DatabaseImpl) QueryContext(ctx context.Context, query string,... method ExecContext (line 20) | func (c *DatabaseImpl) ExecContext(ctx context.Context, query string, ... type RowImpl (line 24) | type RowImpl struct method Scan (line 28) | func (r *RowImpl) Scan(dest ...interface{}) error { type RowsImpl (line 32) | type RowsImpl struct method Scan (line 36) | func (r RowsImpl) Scan(dest ...interface{}) error { method Close (line 40) | func (r RowsImpl) Close() error { method Next (line 44) | func (r RowsImpl) Next() bool { type ResultImpl (line 48) | type ResultImpl struct method LastInsertId (line 52) | func (r *ResultImpl) LastInsertId() (int64, error) { method RowsAffected (line 56) | func (r *ResultImpl) RowsAffected() (int64, error) { FILE: ch11/01_di_induced_damage/06_inject_sql/02_implementation_test.go function TestImplements (line 9) | func TestImplements(t *testing.T) { FILE: ch11/01_di_induced_damage/06_inject_sql/dao.go function NewDAO (line 13) | func NewDAO(cfg Config) *DAO { type DAO (line 23) | type DAO struct method Load (line 30) | func (d *DAO) Load(ctx context.Context, ID int) (*Person, error) { method LoadAll (line 61) | func (d *DAO) LoadAll(ctx context.Context) ([]*Person, error) { method Save (line 104) | func (d *DAO) Save(ctx context.Context, in *Person) (int, error) { FILE: ch11/01_di_induced_damage/06_inject_sql/data.go constant defaultPersonID (line 12) | defaultPersonID = 0 constant sqlAllColumns (line 15) | sqlAllColumns = "id, fullname, phone, currency, price" constant sqlInsert (line 16) | sqlInsert = "INSERT INTO person (fullname, phone, currency, price) V... constant sqlLoadAll (line 17) | sqlLoadAll = "SELECT " + sqlAllColumns + " FROM person" constant sqlLoadByID (line 18) | sqlLoadByID = "SELECT " + sqlAllColumns + " FROM person WHERE id = ? L... type Config (line 29) | type Config interface type Person (line 48) | type Person struct type scanner (line 62) | type scanner function populatePerson (line 65) | func populatePerson(scanner scanner) (*Person, error) { FILE: ch11/01_di_induced_damage/06_inject_sql/data_test.go function TestSave_happyPath (line 15) | func TestSave_happyPath(t *testing.T) { function TestSave_insertError (line 51) | func TestSave_insertError(t *testing.T) { function TestSave_getDBError (line 88) | func TestSave_getDBError(t *testing.T) { function TestLoadAll_tableDrivenTest (line 120) | func TestLoadAll_tableDrivenTest(t *testing.T) { function TestLoad_tableDrivenTest (line 188) | func TestLoad_tableDrivenTest(t *testing.T) { function convertSQLToRegex (line 255) | func convertSQLToRegex(in string) string { type testConfig (line 259) | type testConfig struct method DataDSN (line 262) | func (t *testConfig) DataDSN() string { FILE: ch11/01_di_induced_damage/07_needless_indirection/example_test.go function TestExample (line 12) | func TestExample(t *testing.T) { FILE: ch11/01_di_induced_damage/08_needless_indirection/01_mux.go type MyMux (line 8) | type MyMux interface function buildRouter (line 15) | func buildRouter(mux MyMux) { type getEndpoint (line 21) | type getEndpoint struct method ServeHTTP (line 23) | func (*getEndpoint) ServeHTTP(_ http.ResponseWriter, _ *http.Request) { type listEndpoint (line 27) | type listEndpoint struct method ServeHTTP (line 29) | func (*listEndpoint) ServeHTTP(_ http.ResponseWriter, _ *http.Request) { type saveEndpoint (line 33) | type saveEndpoint struct method ServeHTTP (line 35) | func (*saveEndpoint) ServeHTTP(_ http.ResponseWriter, _ *http.Request) { FILE: ch11/01_di_induced_damage/08_needless_indirection/01_mux_test.go function TestBuildRouter (line 9) | func TestBuildRouter(t *testing.T) { FILE: ch11/01_di_induced_damage/08_needless_indirection/mock_my_mux_test.go type MockMyMux (line 14) | type MockMyMux struct method Handle (line 19) | func (_m *MockMyMux) Handle(pattern string, handler http.Handler) { method Handler (line 24) | func (_m *MockMyMux) Handler(req *http.Request) (http.Handler, string) { method ServeHTTP (line 47) | func (_m *MockMyMux) ServeHTTP(resp http.ResponseWriter, req *http.Req... FILE: ch11/01_di_induced_damage/09_needless_indirection/01_mux.go function buildRouter (line 8) | func buildRouter(mux *http.ServeMux) { type getEndpoint (line 14) | type getEndpoint struct method ServeHTTP (line 16) | func (*getEndpoint) ServeHTTP(_ http.ResponseWriter, _ *http.Request) { type listEndpoint (line 20) | type listEndpoint struct method ServeHTTP (line 22) | func (*listEndpoint) ServeHTTP(_ http.ResponseWriter, _ *http.Request) { type saveEndpoint (line 26) | type saveEndpoint struct method ServeHTTP (line 28) | func (*saveEndpoint) ServeHTTP(_ http.ResponseWriter, _ *http.Request) { FILE: ch11/01_di_induced_damage/09_needless_indirection/01_mux_test.go function TestBuildRouter (line 10) | func TestBuildRouter(t *testing.T) { function extractHandler (line 22) | func extractHandler(router *http.ServeMux, path string) http.Handler { FILE: ch11/01_di_induced_damage/10_needless_indirection/01_mux_e2e.go function buildRouter (line 8) | func buildRouter(mux *http.ServeMux) { type getEndpoint (line 14) | type getEndpoint struct method ServeHTTP (line 16) | func (*getEndpoint) ServeHTTP(resp http.ResponseWriter, _ *http.Reques... type listEndpoint (line 20) | type listEndpoint struct method ServeHTTP (line 22) | func (*listEndpoint) ServeHTTP(resp http.ResponseWriter, _ *http.Reque... type saveEndpoint (line 26) | type saveEndpoint struct method ServeHTTP (line 28) | func (*saveEndpoint) ServeHTTP(resp http.ResponseWriter, _ *http.Reque... FILE: ch11/01_di_induced_damage/10_needless_indirection/01_mux_e2e_test.go function TestBuildRouter (line 12) | func TestBuildRouter(t *testing.T) { function doGet (line 36) | func doGet(t *testing.T, address string) string { FILE: ch11/01_di_induced_damage/11_service_locator/01_service_locator.go function NewServiceLocator (line 3) | func NewServiceLocator() *ServiceLocator { type ServiceLocator (line 9) | type ServiceLocator struct method Store (line 14) | func (s *ServiceLocator) Store(key string, dep interface{}) { method Get (line 19) | func (s *ServiceLocator) Get(key string) interface{} { FILE: ch11/01_di_induced_damage/11_service_locator/02_usage.go function Example (line 3) | func Example() { function buildServiceLocator (line 8) | func buildServiceLocator() *ServiceLocator { function useServiceLocator (line 19) | func useServiceLocator(locator *ServiceLocator) { function useServiceLocatorExtended (line 27) | func useServiceLocatorExtended(locator *ServiceLocator) { type Logger (line 42) | type Logger interface type myLogger (line 46) | type myLogger struct method Info (line 48) | func (m *myLogger) Info(message string, args ...interface{}) { type Converter (line 52) | type Converter interface type myConverter (line 56) | type myConverter struct method Convert (line 58) | func (m *myConverter) Convert(in float64) (float64, error) { FILE: ch11/02_premature_future/get.go constant defaultPersonID (line 15) | defaultPersonID = 0 constant muxVarID (line 18) | muxVarID = "id" type GetModel (line 22) | type GetModel interface type GetConfig (line 27) | type GetConfig interface type Formatter (line 32) | type Formatter interface function NewGetHandler (line 37) | func NewGetHandler(cfg GetConfig, model GetModel, formatter Formatter) *... type GetHandler (line 46) | type GetHandler struct method ServeHTTP (line 53) | func (h *GetHandler) ServeHTTP(response http.ResponseWriter, request *... method extractID (line 79) | func (h *GetHandler) extractID(request *http.Request) (int, error) { method buildOutput (line 103) | func (h *GetHandler) buildOutput(writer io.Writer, person *Person) err... type getResponseFormat (line 124) | type getResponseFormat struct type Person (line 132) | type Person struct type Logger (line 140) | type Logger interface FILE: ch11/03_mocking_http_requests/converter.go constant urlFormat (line 15) | urlFormat = "%s/api/historical?access_key=%s&date=2018-06-20¤cies=%s" constant defaultPrice (line 18) | defaultPrice = 0.0 type Config (line 22) | type Config interface function NewConverter (line 29) | func NewConverter(cfg Config, requester Requester) *Converter { type Converter (line 37) | type Converter struct method Exchange (line 43) | func (c *Converter) Exchange(ctx context.Context, basePrice float64, c... method loadRateFromServer (line 61) | func (c *Converter) loadRateFromServer(ctx context.Context, currency s... method extractRate (line 84) | func (c *Converter) extractRate(response *http.Response, currency stri... method extractResponse (line 107) | func (c *Converter) extractResponse(response *http.Response) (*apiResp... method logger (line 125) | func (c *Converter) logger() Logger { type apiResponseFormat (line 130) | type apiResponseFormat struct type Requester (line 136) | type Requester interface type Requesterer (line 141) | type Requesterer struct method doRequest (line 144) | func (r *Requesterer) doRequest(ctx context.Context, url string) (*htt... type Logger (line 161) | type Logger interface type stubLogger (line 166) | type stubLogger struct method Warn (line 168) | func (l *stubLogger) Warn(message string, args ...interface{}) { method Error (line 172) | func (l *stubLogger) Error(message string, args ...interface{}) { FILE: ch11/03_mocking_http_requests/converter_test.go function TestExchange_invalidResponse (line 14) | func TestExchange_invalidResponse(t *testing.T) { type testConfig (line 45) | type testConfig struct method Logger (line 48) | func (t *testConfig) Logger() Logger { method ExchangeBaseURL (line 52) | func (t *testConfig) ExchangeBaseURL() string { method ExchangeAPIKey (line 56) | func (t *testConfig) ExchangeAPIKey() string { FILE: ch11/03_mocking_http_requests/mock_requester_test.go type mockRequester (line 15) | type mockRequester struct method doRequest (line 20) | func (_m *mockRequester) doRequest(ctx context.Context, url string) (*... FILE: ch11/acme/internal/config/config.go constant DefaultEnvVar (line 13) | DefaultEnvVar = "ACME_CONFIG" type Config (line 16) | type Config struct method Logger (line 37) | func (c *Config) Logger() logging.Logger { method RegistrationBasePrice (line 46) | func (c *Config) RegistrationBasePrice() float64 { method DataDSN (line 51) | func (c *Config) DataDSN() string { method ExchangeBaseURL (line 56) | func (c *Config) ExchangeBaseURL() string { method ExchangeAPIKey (line 61) | func (c *Config) ExchangeAPIKey() string { method BindAddress (line 66) | func (c *Config) BindAddress() string { function Load (line 71) | func Load() (*Config, error) { function load (line 88) | func load(filename string) (*Config, error) { FILE: ch11/acme/internal/config/config_test.go function TestLoad (line 10) | func TestLoad(t *testing.T) { FILE: ch11/acme/internal/logging/logging.go type Logger (line 8) | type Logger interface type LoggerStdOut (line 16) | type LoggerStdOut struct method Debug (line 19) | func (l LoggerStdOut) Debug(message string, args ...interface{}) { method Info (line 24) | func (l LoggerStdOut) Info(message string, args ...interface{}) { method Warn (line 29) | func (l LoggerStdOut) Warn(message string, args ...interface{}) { method Error (line 34) | func (l LoggerStdOut) Error(message string, args ...interface{}) { FILE: ch11/acme/internal/modules/data/dao.go function NewDAO (line 11) | func NewDAO(cfg Config) *DAO { type DAO (line 21) | type DAO struct method Load (line 31) | func (d *DAO) Load(ctx context.Context, ID int) (*Person, error) { method LoadAll (line 65) | func (d *DAO) LoadAll(ctx context.Context) ([]*Person, error) { method Save (line 111) | func (d *DAO) Save(ctx context.Context, in *Person) (int, error) { method getTracker (line 142) | func (d *DAO) getTracker() QueryTracker { FILE: ch11/acme/internal/modules/data/data.go constant defaultPersonID (line 13) | defaultPersonID = 0 constant sqlAllColumns (line 16) | sqlAllColumns = "id, fullname, phone, currency, price" constant sqlInsert (line 17) | sqlInsert = "INSERT INTO person (fullname, phone, currency, price) V... constant sqlLoadAll (line 18) | sqlLoadAll = "SELECT " + sqlAllColumns + " FROM person" constant sqlLoadByID (line 19) | sqlLoadByID = "SELECT " + sqlAllColumns + " FROM person WHERE id = ? L... type Config (line 30) | type Config interface type Person (line 52) | type Person struct type scanner (line 66) | type scanner function populatePerson (line 69) | func populatePerson(scanner scanner) (*Person, error) { FILE: ch11/acme/internal/modules/data/data_test.go function TestSave_happyPath (line 17) | func TestSave_happyPath(t *testing.T) { function TestSave_insertError (line 53) | func TestSave_insertError(t *testing.T) { function TestSave_getDBError (line 90) | func TestSave_getDBError(t *testing.T) { function TestLoadAll_tableDrivenTest (line 122) | func TestLoadAll_tableDrivenTest(t *testing.T) { function TestLoad_tableDrivenTest (line 190) | func TestLoad_tableDrivenTest(t *testing.T) { function convertSQLToRegex (line 257) | func convertSQLToRegex(in string) string { type testConfig (line 261) | type testConfig struct method Logger (line 264) | func (t *testConfig) Logger() logging.Logger { method DataDSN (line 269) | func (t *testConfig) DataDSN() string { FILE: ch11/acme/internal/modules/data/tracker.go type QueryTracker (line 10) | type QueryTracker interface type noopTracker (line 16) | type noopTracker struct method Track (line 19) | func (_ *noopTracker) Track(_ string, _ time.Time) { function NewLogTracker (line 24) | func NewLogTracker(logger logging.Logger) *LogTracker { type LogTracker (line 31) | type LogTracker struct method Track (line 36) | func (l *LogTracker) Track(key string, start time.Time) { FILE: ch11/acme/internal/modules/exchange/converter.go constant urlFormat (line 17) | urlFormat = "%s/api/historical?access_key=%s&date=2018-06-20¤cies=%s" constant defaultPrice (line 20) | defaultPrice = 0.0 function NewConverter (line 24) | func NewConverter(cfg Config) *Converter { type Config (line 31) | type Config interface type Converter (line 39) | type Converter struct method Exchange (line 44) | func (c *Converter) Exchange(ctx context.Context, basePrice float64, c... method loadRateFromServer (line 62) | func (c *Converter) loadRateFromServer(ctx context.Context, currency s... method extractRate (line 99) | func (c *Converter) extractRate(response *http.Response, currency stri... method extractResponse (line 122) | func (c *Converter) extractResponse(response *http.Response) (*apiResp... method logger (line 140) | func (c *Converter) logger() logging.Logger { type apiResponseFormat (line 145) | type apiResponseFormat struct FILE: ch11/acme/internal/modules/exchange/converter_ext_bounday_test.go function TestExternalBoundaryTest (line 14) | func TestExternalBoundaryTest(t *testing.T) { FILE: ch11/acme/internal/modules/exchange/converter_int_bounday_test.go function TestInternalBoundaryTest (line 14) | func TestInternalBoundaryTest(t *testing.T) { type happyExchangeRateService (line 34) | type happyExchangeRateService struct method ServeHTTP (line 37) | func (*happyExchangeRateService) ServeHTTP(response http.ResponseWrite... function TestExchange_invalidResponseFromServer (line 52) | func TestExchange_invalidResponseFromServer(t *testing.T) { type testConfig (line 81) | type testConfig struct method Logger (line 87) | func (t *testConfig) Logger() logging.Logger { method ExchangeBaseURL (line 92) | func (t *testConfig) ExchangeBaseURL() string { method ExchangeAPIKey (line 97) | func (t *testConfig) ExchangeAPIKey() string { FILE: ch11/acme/internal/modules/get/get.go function NewGetter (line 17) | func NewGetter(cfg Config) *Getter { type Config (line 24) | type Config interface type Getter (line 31) | type Getter struct method Do (line 37) | func (g *Getter) Do(ID int) (*Person, error) { method getLoader (line 51) | func (g *Getter) getLoader() myLoader { method convert (line 59) | func (g *Getter) convert(in *data.Person) *Person { type myLoader (line 70) | type myLoader interface type Person (line 76) | type Person struct FILE: ch11/acme/internal/modules/get/go_test.go function TestGetter_Do_happyPath (line 13) | func TestGetter_Do_happyPath(t *testing.T) { function TestGetter_Do_noSuchPerson (line 38) | func TestGetter_Do_noSuchPerson(t *testing.T) { function TestGetter_Do_error (line 58) | func TestGetter_Do_error(t *testing.T) { FILE: ch11/acme/internal/modules/get/mock_my_loader_test.go type mockMyLoader (line 15) | type mockMyLoader struct method Load (line 20) | func (_m *mockMyLoader) Load(ctx context.Context, ID int) (*data.Perso... FILE: ch11/acme/internal/modules/list/list.go function NewLister (line 17) | func NewLister(cfg Config) *Lister { type Config (line 24) | type Config interface type Lister (line 31) | type Lister struct method Do (line 37) | func (l *Lister) Do() ([]*Person, error) { method load (line 53) | func (l *Lister) load() ([]*data.Person, error) { method getLoader (line 66) | func (l *Lister) getLoader() myLoader { method convert (line 77) | func (l *Lister) convert(in []*data.Person) []*Person { type myLoader (line 92) | type myLoader interface type Person (line 98) | type Person struct FILE: ch11/acme/internal/modules/list/list_test.go function TestLister_Do_happyPath (line 13) | func TestLister_Do_happyPath(t *testing.T) { function TestLister_Do_noResults (line 41) | func TestLister_Do_noResults(t *testing.T) { function TestLister_Do_error (line 58) | func TestLister_Do_error(t *testing.T) { FILE: ch11/acme/internal/modules/list/mock_my_loader_test.go type mockMyLoader (line 15) | type mockMyLoader struct method LoadAll (line 20) | func (_m *mockMyLoader) LoadAll(ctx context.Context) ([]*data.Person, ... FILE: ch11/acme/internal/modules/register/mock_exchanger_test.go type MockExchanger (line 14) | type MockExchanger struct method Exchange (line 19) | func (_m *MockExchanger) Exchange(ctx context.Context, basePrice float... FILE: ch11/acme/internal/modules/register/mock_my_saver_test.go type mockMySaver (line 15) | type mockMySaver struct method Save (line 20) | func (_m *mockMySaver) Save(ctx context.Context, in *data.Person) (int... FILE: ch11/acme/internal/modules/register/register.go constant defaultPersonID (line 13) | defaultPersonID = 0 function NewRegisterer (line 37) | func NewRegisterer(cfg Config, exchanger Exchanger) *Registerer { type Exchanger (line 46) | type Exchanger interface type Config (line 52) | type Config interface type Registerer (line 64) | type Registerer struct method Do (line 71) | func (r *Registerer) Do(ctx context.Context, in *Person) (int, error) { method validateInput (line 96) | func (r *Registerer) validateInput(in *Person) error { method getPrice (line 116) | func (r *Registerer) getPrice(ctx context.Context, currency string) (f... method save (line 127) | func (r *Registerer) save(ctx context.Context, in *data.Person, price ... method getSaver (line 137) | func (r *Registerer) getSaver() mySaver { method logger (line 145) | func (r *Registerer) logger() logging.Logger { method convert (line 149) | func (r *Registerer) convert(in *Person) *data.Person { type mySaver (line 160) | type mySaver interface type Person (line 166) | type Person struct FILE: ch11/acme/internal/modules/register/register_test.go function TestRegisterer_Do_happyPath (line 15) | func TestRegisterer_Do_happyPath(t *testing.T) { function TestRegisterer_Do_error (line 47) | func TestRegisterer_Do_error(t *testing.T) { function TestRegisterer_Do_exchangeError (line 77) | func TestRegisterer_Do_exchangeError(t *testing.T) { type testConfig (line 113) | type testConfig struct method Logger (line 116) | func (t *testConfig) Logger() logging.Logger { method RegistrationBasePrice (line 121) | func (t *testConfig) RegistrationBasePrice() float64 { method DataDSN (line 126) | func (t *testConfig) DataDSN() string { type stubExchanger (line 130) | type stubExchanger struct method Exchange (line 133) | func (s stubExchanger) Exchange(ctx context.Context, basePrice float64... FILE: ch11/acme/internal/rest/get.go constant defaultPersonID (line 18) | defaultPersonID = 0 constant muxVarID (line 21) | muxVarID = "id" type GetModel (line 26) | type GetModel interface type GetConfig (line 31) | type GetConfig interface function NewGetHandler (line 36) | func NewGetHandler(cfg GetConfig, model GetModel) *GetHandler { type GetHandler (line 47) | type GetHandler struct method ServeHTTP (line 53) | func (h *GetHandler) ServeHTTP(response http.ResponseWriter, request *... method extractID (line 79) | func (h *GetHandler) extractID(request *http.Request) (int, error) { method writeJSON (line 103) | func (h *GetHandler) writeJSON(writer io.Writer, person *get.Person) e... type getResponseFormat (line 117) | type getResponseFormat struct FILE: ch11/acme/internal/rest/get_test.go function TestGetHandler_ServeHTTP (line 18) | func TestGetHandler_ServeHTTP(t *testing.T) { type testConfig (line 146) | type testConfig struct method Logger (line 149) | func (t *testConfig) Logger() logging.Logger { method BindAddress (line 153) | func (*testConfig) BindAddress() string { FILE: ch11/acme/internal/rest/list.go type ListModel (line 13) | type ListModel interface function NewListHandler (line 18) | func NewListHandler(model ListModel) *ListHandler { type ListHandler (line 26) | type ListHandler struct method ServeHTTP (line 31) | func (h *ListHandler) ServeHTTP(response http.ResponseWriter, request ... method writeJSON (line 49) | func (h *ListHandler) writeJSON(writer io.Writer, people []*list.Perso... type listResponseFormat (line 66) | type listResponseFormat struct type listResponseItemFormat (line 70) | type listResponseItemFormat struct FILE: ch11/acme/internal/rest/list_test.go function TestListHandler_ServeHTTP (line 16) | func TestListHandler_ServeHTTP(t *testing.T) { FILE: ch11/acme/internal/rest/mock_get_model_test.go type MockGetModel (line 13) | type MockGetModel struct method Do (line 18) | func (_m *MockGetModel) Do(ID int) (*get.Person, error) { FILE: ch11/acme/internal/rest/mock_list_model_test.go type MockListModel (line 13) | type MockListModel struct method Do (line 18) | func (_m *MockListModel) Do() ([]*list.Person, error) { FILE: ch11/acme/internal/rest/mock_register_model_test.go type MockRegisterModel (line 15) | type MockRegisterModel struct method Do (line 20) | func (_m *MockRegisterModel) Do(ctx context.Context, in *register.Pers... FILE: ch11/acme/internal/rest/not_found.go function notFoundHandler (line 7) | func notFoundHandler(response http.ResponseWriter, _ *http.Request) { FILE: ch11/acme/internal/rest/not_found_test.go function TestNotFoundHandler_ServeHTTP (line 11) | func TestNotFoundHandler_ServeHTTP(t *testing.T) { FILE: ch11/acme/internal/rest/register.go type RegisterModel (line 15) | type RegisterModel interface function NewRegisterHandler (line 20) | func NewRegisterHandler(model RegisterModel) *RegisterHandler { type RegisterHandler (line 29) | type RegisterHandler struct method ServeHTTP (line 34) | func (h *RegisterHandler) ServeHTTP(response http.ResponseWriter, requ... method extractPayload (line 61) | func (h *RegisterHandler) extractPayload(request *http.Request) (*regi... method register (line 74) | func (h *RegisterHandler) register(ctx context.Context, requestPayload... type registerRequest (line 85) | type registerRequest struct FILE: ch11/acme/internal/rest/register_test.go function TestRegisterHandler_ServeHTTP (line 17) | func TestRegisterHandler_ServeHTTP(t *testing.T) { function buildValidRegisterRequest (line 113) | func buildValidRegisterRequest() io.Reader { FILE: ch11/acme/internal/rest/server.go type Config (line 11) | type Config interface function New (line 17) | func New(cfg Config, type Server (line 32) | type Server struct method Listen (line 43) | func (s *Server) Listen(stop <-chan struct{}) { method buildRouter (line 65) | func (s *Server) buildRouter() http.Handler { FILE: ch11/acme/main.go function main (line 16) | func main() { FILE: ch11/acme/main_test.go function TestRegister (line 18) | func TestRegister(t *testing.T) { function TestGet (line 46) | func TestGet(t *testing.T) { function TestList (line 65) | func TestList(t *testing.T) { function startTestServer (line 84) | func startTestServer(t *testing.T, ctx context.Context) string { function getFreePort (line 110) | func getFreePort() (string, error) { function getPort (line 139) | func getPort(addr fmt.Stringer) (string, error) { FILE: ch11/acme/wire.go function initializeServer (line 16) | func initializeServer() (*rest.Server, error) { function initializeServerCustomConfig (line 21) | func initializeServerCustomConfig(_ exchange.Config, _ get.Config, _ lis... FILE: ch11/acme/wire_gen.go function initializeServer (line 19) | func initializeServer() (*rest.Server, error) { function initializeServerCustomConfig (line 32) | func initializeServerCustomConfig(exchangeConfig exchange.Config, getCon... FILE: ch12/01_improvements/01_test_logging_test.go function TestLogging (line 11) | func TestLogging(t *testing.T) { type Calculator (line 27) | type Calculator struct method divide (line 31) | func (c *Calculator) divide(dividend int, divisor int) int { type Logger (line 41) | type Logger interface type LogRecorder (line 46) | type LogRecorder struct method Error (line 50) | func (l *LogRecorder) Error(message string, args ...interface{}) { FILE: ch12/03_testing/01_mock_get_model.go type MockGetModel (line 7) | type MockGetModel struct method Do (line 11) | func (_m *MockGetModel) Do(ID int) (*Person, error) { type Person (line 21) | type Person struct FILE: ch12/04_new_service/01_data_with_cache/dao.go type DAO (line 13) | type DAO struct method Load (line 23) | func (d *DAO) Load(ctx context.Context, ID int) (*Person, error) { method loadFromCache (line 51) | func (d *DAO) loadFromCache(ID int) *Person { method saveToCache (line 71) | func (d *DAO) saveToCache(ID int, person *Person) { method buildCacheKey (line 84) | func (d *DAO) buildCacheKey(ID int) string { FILE: ch12/04_new_service/01_data_with_cache/data.go constant sqlAllColumns (line 12) | sqlAllColumns = "id, fullname, phone, currency, price" constant sqlLoadByID (line 13) | sqlLoadByID = "SELECT " + sqlAllColumns + " FROM person WHERE id = ? L... type Config (line 22) | type Config interface type Person (line 31) | type Person struct type scanner (line 45) | type scanner function populatePerson (line 48) | func populatePerson(scanner scanner) (*Person, error) { FILE: ch12/04_new_service/01_data_with_cache/internal/cache/cache.go type Cache (line 7) | type Cache struct method Get (line 9) | func (c *Cache) Get(key string) ([]byte, error) { method Set (line 13) | func (c *Cache) Set(key string, data []byte) error { FILE: ch12/04_new_service/01_data_with_cache/internal/logging/logging.go type Logger (line 8) | type Logger interface type LoggerStdOut (line 16) | type LoggerStdOut struct method Debug (line 19) | func (l LoggerStdOut) Debug(message string, args ...interface{}) { method Info (line 24) | func (l LoggerStdOut) Info(message string, args ...interface{}) { method Warn (line 29) | func (l LoggerStdOut) Warn(message string, args ...interface{}) { method Error (line 34) | func (l LoggerStdOut) Error(message string, args ...interface{}) { FILE: ch12/acme/internal/config/config.go constant DefaultEnvVar (line 13) | DefaultEnvVar = "ACME_CONFIG" type Config (line 16) | type Config struct method Logger (line 37) | func (c *Config) Logger() logging.Logger { method RegistrationBasePrice (line 46) | func (c *Config) RegistrationBasePrice() float64 { method DataDSN (line 51) | func (c *Config) DataDSN() string { method ExchangeBaseURL (line 56) | func (c *Config) ExchangeBaseURL() string { method ExchangeAPIKey (line 61) | func (c *Config) ExchangeAPIKey() string { method BindAddress (line 66) | func (c *Config) BindAddress() string { function Load (line 71) | func Load() (*Config, error) { function load (line 88) | func load(filename string) (*Config, error) { FILE: ch12/acme/internal/config/config_test.go function TestLoad (line 10) | func TestLoad(t *testing.T) { FILE: ch12/acme/internal/logging/logging.go type Logger (line 8) | type Logger interface type LoggerStdOut (line 16) | type LoggerStdOut struct method Debug (line 19) | func (l LoggerStdOut) Debug(message string, args ...interface{}) { method Info (line 24) | func (l LoggerStdOut) Info(message string, args ...interface{}) { method Warn (line 29) | func (l LoggerStdOut) Warn(message string, args ...interface{}) { method Error (line 34) | func (l LoggerStdOut) Error(message string, args ...interface{}) { FILE: ch12/acme/internal/modules/data/dao.go function NewDAO (line 11) | func NewDAO(cfg Config) *DAO { type DAO (line 21) | type DAO struct method Load (line 31) | func (d *DAO) Load(ctx context.Context, ID int) (*Person, error) { method LoadAll (line 65) | func (d *DAO) LoadAll(ctx context.Context) ([]*Person, error) { method Save (line 111) | func (d *DAO) Save(ctx context.Context, in *Person) (int, error) { method getTracker (line 142) | func (d *DAO) getTracker() QueryTracker { FILE: ch12/acme/internal/modules/data/data.go constant defaultPersonID (line 13) | defaultPersonID = 0 constant sqlAllColumns (line 16) | sqlAllColumns = "id, fullname, phone, currency, price" constant sqlInsert (line 17) | sqlInsert = "INSERT INTO person (fullname, phone, currency, price) V... constant sqlLoadAll (line 18) | sqlLoadAll = "SELECT " + sqlAllColumns + " FROM person" constant sqlLoadByID (line 19) | sqlLoadByID = "SELECT " + sqlAllColumns + " FROM person WHERE id = ? L... type Config (line 30) | type Config interface type Person (line 52) | type Person struct type scanner (line 66) | type scanner function populatePerson (line 69) | func populatePerson(scanner scanner) (*Person, error) { FILE: ch12/acme/internal/modules/data/data_test.go function TestSave_happyPath (line 17) | func TestSave_happyPath(t *testing.T) { function TestSave_insertError (line 53) | func TestSave_insertError(t *testing.T) { function TestSave_getDBError (line 90) | func TestSave_getDBError(t *testing.T) { function TestLoadAll_tableDrivenTest (line 122) | func TestLoadAll_tableDrivenTest(t *testing.T) { function TestLoad_tableDrivenTest (line 190) | func TestLoad_tableDrivenTest(t *testing.T) { function convertSQLToRegex (line 257) | func convertSQLToRegex(in string) string { type testConfig (line 261) | type testConfig struct method Logger (line 264) | func (t *testConfig) Logger() logging.Logger { method DataDSN (line 269) | func (t *testConfig) DataDSN() string { FILE: ch12/acme/internal/modules/data/tracker.go type QueryTracker (line 10) | type QueryTracker interface type noopTracker (line 16) | type noopTracker struct method Track (line 19) | func (_ *noopTracker) Track(_ string, _ time.Time) { function NewLogTracker (line 24) | func NewLogTracker(logger logging.Logger) *LogTracker { type LogTracker (line 31) | type LogTracker struct method Track (line 36) | func (l *LogTracker) Track(key string, start time.Time) { FILE: ch12/acme/internal/modules/exchange/converter.go constant urlFormat (line 17) | urlFormat = "%s/api/historical?access_key=%s&date=2018-06-20¤cies=%s" constant defaultPrice (line 20) | defaultPrice = 0.0 function NewConverter (line 24) | func NewConverter(cfg Config) *Converter { type Config (line 31) | type Config interface type Converter (line 39) | type Converter struct method Exchange (line 44) | func (c *Converter) Exchange(ctx context.Context, basePrice float64, c... method loadRateFromServer (line 62) | func (c *Converter) loadRateFromServer(ctx context.Context, currency s... method extractRate (line 99) | func (c *Converter) extractRate(response *http.Response, currency stri... method extractResponse (line 122) | func (c *Converter) extractResponse(response *http.Response) (*apiResp... method logger (line 140) | func (c *Converter) logger() logging.Logger { type apiResponseFormat (line 145) | type apiResponseFormat struct FILE: ch12/acme/internal/modules/exchange/converter_ext_bounday_test.go function TestExternalBoundaryTest (line 14) | func TestExternalBoundaryTest(t *testing.T) { FILE: ch12/acme/internal/modules/exchange/converter_int_bounday_test.go function TestInternalBoundaryTest (line 14) | func TestInternalBoundaryTest(t *testing.T) { type happyExchangeRateService (line 34) | type happyExchangeRateService struct method ServeHTTP (line 37) | func (*happyExchangeRateService) ServeHTTP(response http.ResponseWrite... function TestExchange_invalidResponseFromServer (line 52) | func TestExchange_invalidResponseFromServer(t *testing.T) { type testConfig (line 82) | type testConfig struct method Logger (line 88) | func (t *testConfig) Logger() logging.Logger { method ExchangeBaseURL (line 93) | func (t *testConfig) ExchangeBaseURL() string { method ExchangeAPIKey (line 98) | func (t *testConfig) ExchangeAPIKey() string { FILE: ch12/acme/internal/modules/get/get.go function NewGetter (line 17) | func NewGetter(cfg Config) *Getter { type Config (line 24) | type Config interface type Getter (line 31) | type Getter struct method Do (line 37) | func (g *Getter) Do(ID int) (*Person, error) { method getLoader (line 51) | func (g *Getter) getLoader() myLoader { method convert (line 59) | func (g *Getter) convert(in *data.Person) *Person { type myLoader (line 70) | type myLoader interface type Person (line 76) | type Person struct FILE: ch12/acme/internal/modules/get/go_test.go function TestGetter_Do_happyPath (line 13) | func TestGetter_Do_happyPath(t *testing.T) { function TestGetter_Do_noSuchPerson (line 38) | func TestGetter_Do_noSuchPerson(t *testing.T) { function TestGetter_Do_error (line 58) | func TestGetter_Do_error(t *testing.T) { FILE: ch12/acme/internal/modules/get/mock_my_loader_test.go type mockMyLoader (line 15) | type mockMyLoader struct method Load (line 20) | func (_m *mockMyLoader) Load(ctx context.Context, ID int) (*data.Perso... FILE: ch12/acme/internal/modules/list/list.go function NewLister (line 17) | func NewLister(cfg Config) *Lister { type Config (line 24) | type Config interface type Lister (line 31) | type Lister struct method Do (line 37) | func (l *Lister) Do() ([]*Person, error) { method load (line 53) | func (l *Lister) load() ([]*data.Person, error) { method getLoader (line 66) | func (l *Lister) getLoader() myLoader { method convert (line 77) | func (l *Lister) convert(in []*data.Person) []*Person { type myLoader (line 92) | type myLoader interface type Person (line 98) | type Person struct FILE: ch12/acme/internal/modules/list/list_test.go function TestLister_Do_happyPath (line 13) | func TestLister_Do_happyPath(t *testing.T) { function TestLister_Do_noResults (line 41) | func TestLister_Do_noResults(t *testing.T) { function TestLister_Do_error (line 58) | func TestLister_Do_error(t *testing.T) { FILE: ch12/acme/internal/modules/list/mock_my_loader_test.go type mockMyLoader (line 15) | type mockMyLoader struct method LoadAll (line 20) | func (_m *mockMyLoader) LoadAll(ctx context.Context) ([]*data.Person, ... FILE: ch12/acme/internal/modules/register/mock_exchanger_test.go type MockExchanger (line 14) | type MockExchanger struct method Exchange (line 19) | func (_m *MockExchanger) Exchange(ctx context.Context, basePrice float... FILE: ch12/acme/internal/modules/register/mock_my_saver_test.go type mockMySaver (line 15) | type mockMySaver struct method Save (line 20) | func (_m *mockMySaver) Save(ctx context.Context, in *data.Person) (int... FILE: ch12/acme/internal/modules/register/register.go constant defaultPersonID (line 13) | defaultPersonID = 0 function NewRegisterer (line 37) | func NewRegisterer(cfg Config, exchanger Exchanger) *Registerer { type Exchanger (line 46) | type Exchanger interface type Config (line 52) | type Config interface type Registerer (line 64) | type Registerer struct method Do (line 71) | func (r *Registerer) Do(ctx context.Context, in *Person) (int, error) { method validateInput (line 96) | func (r *Registerer) validateInput(in *Person) error { method getPrice (line 116) | func (r *Registerer) getPrice(ctx context.Context, currency string) (f... method save (line 127) | func (r *Registerer) save(ctx context.Context, in *data.Person, price ... method getSaver (line 137) | func (r *Registerer) getSaver() mySaver { method logger (line 145) | func (r *Registerer) logger() logging.Logger { method convert (line 149) | func (r *Registerer) convert(in *Person) *data.Person { type mySaver (line 160) | type mySaver interface type Person (line 166) | type Person struct FILE: ch12/acme/internal/modules/register/register_test.go function TestRegisterer_Do_happyPath (line 15) | func TestRegisterer_Do_happyPath(t *testing.T) { function TestRegisterer_Do_error (line 47) | func TestRegisterer_Do_error(t *testing.T) { function TestRegisterer_Do_exchangeError (line 77) | func TestRegisterer_Do_exchangeError(t *testing.T) { type testConfig (line 113) | type testConfig struct method Logger (line 116) | func (t *testConfig) Logger() logging.Logger { method RegistrationBasePrice (line 121) | func (t *testConfig) RegistrationBasePrice() float64 { method DataDSN (line 126) | func (t *testConfig) DataDSN() string { type stubExchanger (line 130) | type stubExchanger struct method Exchange (line 133) | func (s stubExchanger) Exchange(ctx context.Context, basePrice float64... FILE: ch12/acme/internal/rest/get.go constant defaultPersonID (line 18) | defaultPersonID = 0 constant muxVarID (line 21) | muxVarID = "id" type GetModel (line 26) | type GetModel interface type GetConfig (line 31) | type GetConfig interface function NewGetHandler (line 36) | func NewGetHandler(cfg GetConfig, model GetModel) *GetHandler { type GetHandler (line 47) | type GetHandler struct method ServeHTTP (line 53) | func (h *GetHandler) ServeHTTP(response http.ResponseWriter, request *... method extractID (line 79) | func (h *GetHandler) extractID(request *http.Request) (int, error) { method writeJSON (line 103) | func (h *GetHandler) writeJSON(writer io.Writer, person *get.Person) e... type getResponseFormat (line 117) | type getResponseFormat struct FILE: ch12/acme/internal/rest/get_test.go function TestGetHandler_ServeHTTP (line 18) | func TestGetHandler_ServeHTTP(t *testing.T) { type testConfig (line 146) | type testConfig struct method Logger (line 149) | func (t *testConfig) Logger() logging.Logger { method BindAddress (line 153) | func (*testConfig) BindAddress() string { FILE: ch12/acme/internal/rest/list.go type ListModel (line 13) | type ListModel interface function NewListHandler (line 18) | func NewListHandler(model ListModel) *ListHandler { type ListHandler (line 26) | type ListHandler struct method ServeHTTP (line 31) | func (h *ListHandler) ServeHTTP(response http.ResponseWriter, request ... method writeJSON (line 49) | func (h *ListHandler) writeJSON(writer io.Writer, people []*list.Perso... type listResponseFormat (line 66) | type listResponseFormat struct type listResponseItemFormat (line 70) | type listResponseItemFormat struct FILE: ch12/acme/internal/rest/list_test.go function TestListHandler_ServeHTTP (line 16) | func TestListHandler_ServeHTTP(t *testing.T) { FILE: ch12/acme/internal/rest/mock_get_model_test.go type MockGetModel (line 13) | type MockGetModel struct method Do (line 18) | func (_m *MockGetModel) Do(ID int) (*get.Person, error) { FILE: ch12/acme/internal/rest/mock_list_model_test.go type MockListModel (line 13) | type MockListModel struct method Do (line 18) | func (_m *MockListModel) Do() ([]*list.Person, error) { FILE: ch12/acme/internal/rest/mock_register_model_test.go type MockRegisterModel (line 15) | type MockRegisterModel struct method Do (line 20) | func (_m *MockRegisterModel) Do(ctx context.Context, in *register.Pers... FILE: ch12/acme/internal/rest/not_found.go function notFoundHandler (line 7) | func notFoundHandler(response http.ResponseWriter, _ *http.Request) { FILE: ch12/acme/internal/rest/not_found_test.go function TestNotFoundHandler_ServeHTTP (line 11) | func TestNotFoundHandler_ServeHTTP(t *testing.T) { FILE: ch12/acme/internal/rest/register.go type RegisterModel (line 15) | type RegisterModel interface function NewRegisterHandler (line 20) | func NewRegisterHandler(model RegisterModel) *RegisterHandler { type RegisterHandler (line 29) | type RegisterHandler struct method ServeHTTP (line 34) | func (h *RegisterHandler) ServeHTTP(response http.ResponseWriter, requ... method extractPayload (line 61) | func (h *RegisterHandler) extractPayload(request *http.Request) (*regi... method register (line 74) | func (h *RegisterHandler) register(ctx context.Context, requestPayload... type registerRequest (line 85) | type registerRequest struct FILE: ch12/acme/internal/rest/register_test.go function TestRegisterHandler_ServeHTTP (line 17) | func TestRegisterHandler_ServeHTTP(t *testing.T) { function buildValidRegisterRequest (line 113) | func buildValidRegisterRequest() io.Reader { FILE: ch12/acme/internal/rest/server.go type Config (line 11) | type Config interface function New (line 17) | func New(cfg Config, type Server (line 32) | type Server struct method Listen (line 43) | func (s *Server) Listen(stop <-chan struct{}) { method buildRouter (line 65) | func (s *Server) buildRouter() http.Handler { FILE: ch12/acme/main.go function main (line 16) | func main() { FILE: ch12/acme/main_test.go function TestRegister (line 18) | func TestRegister(t *testing.T) { function TestGet (line 46) | func TestGet(t *testing.T) { function TestList (line 65) | func TestList(t *testing.T) { function startTestServer (line 84) | func startTestServer(t *testing.T, ctx context.Context) string { function getFreePort (line 110) | func getFreePort() (string, error) { function getPort (line 139) | func getPort(addr fmt.Stringer) (string, error) { FILE: ch12/acme/wire.go function initializeServer (line 16) | func initializeServer() (*rest.Server, error) { function initializeServerCustomConfig (line 21) | func initializeServerCustomConfig(_ exchange.Config, _ get.Config, _ lis... FILE: ch12/acme/wire_gen.go function initializeServer (line 19) | func initializeServer() (*rest.Server, error) { function initializeServerCustomConfig (line 32) | func initializeServerCustomConfig(exchangeConfig exchange.Config, getCon... FILE: ch12/fake.go function init (line 3) | func init() { FILE: fake.go function init (line 3) | func init() { FILE: resources/create.sql type `acme` (line 3) | CREATE TABLE IF NOT EXISTS `acme`.`person` ( FILE: vendor/github.com/DATA-DOG/go-sqlmock/argument.go type Argument (line 8) | type Argument interface function AnyArg (line 16) | func AnyArg() Argument { type anyArgument (line 20) | type anyArgument struct method Match (line 22) | func (a anyArgument) Match(_ driver.Value) bool { FILE: vendor/github.com/DATA-DOG/go-sqlmock/driver.go function init (line 12) | func init() { type mockDriver (line 19) | type mockDriver struct method Open (line 25) | func (d *mockDriver) Open(dsn string) (driver.Conn, error) { function New (line 42) | func New() (*sql.DB, Sqlmock, error) { function NewWithDSN (line 67) | func NewWithDSN(dsn string) (*sql.DB, Sqlmock, error) { FILE: vendor/github.com/DATA-DOG/go-sqlmock/expectations.go type expectation (line 13) | type expectation interface type commonExpectation (line 22) | type commonExpectation struct method fulfilled (line 28) | func (e *commonExpectation) fulfilled() bool { type ExpectedClose (line 34) | type ExpectedClose struct method WillReturnError (line 39) | func (e *ExpectedClose) WillReturnError(err error) *ExpectedClose { method String (line 45) | func (e *ExpectedClose) String() string { type ExpectedBegin (line 55) | type ExpectedBegin struct method WillReturnError (line 61) | func (e *ExpectedBegin) WillReturnError(err error) *ExpectedBegin { method String (line 67) | func (e *ExpectedBegin) String() string { method WillDelayFor (line 77) | func (e *ExpectedBegin) WillDelayFor(duration time.Duration) *Expected... type ExpectedCommit (line 84) | type ExpectedCommit struct method WillReturnError (line 89) | func (e *ExpectedCommit) WillReturnError(err error) *ExpectedCommit { method String (line 95) | func (e *ExpectedCommit) String() string { type ExpectedRollback (line 105) | type ExpectedRollback struct method WillReturnError (line 110) | func (e *ExpectedRollback) WillReturnError(err error) *ExpectedRollback { method String (line 116) | func (e *ExpectedRollback) String() string { type ExpectedQuery (line 127) | type ExpectedQuery struct method WithArgs (line 136) | func (e *ExpectedQuery) WithArgs(args ...driver.Value) *ExpectedQuery { method WillReturnError (line 142) | func (e *ExpectedQuery) WillReturnError(err error) *ExpectedQuery { method WillDelayFor (line 149) | func (e *ExpectedQuery) WillDelayFor(duration time.Duration) *Expected... method String (line 155) | func (e *ExpectedQuery) String() string { type ExpectedExec (line 182) | type ExpectedExec struct method WithArgs (line 191) | func (e *ExpectedExec) WithArgs(args ...driver.Value) *ExpectedExec { method WillReturnError (line 197) | func (e *ExpectedExec) WillReturnError(err error) *ExpectedExec { method WillDelayFor (line 204) | func (e *ExpectedExec) WillDelayFor(duration time.Duration) *ExpectedE... method String (line 210) | func (e *ExpectedExec) String() string { method WillReturnResult (line 246) | func (e *ExpectedExec) WillReturnResult(result driver.Result) *Expecte... type ExpectedPrepare (line 253) | type ExpectedPrepare struct method WillReturnError (line 265) | func (e *ExpectedPrepare) WillReturnError(err error) *ExpectedPrepare { method WillReturnCloseError (line 271) | func (e *ExpectedPrepare) WillReturnCloseError(err error) *ExpectedPre... method WillDelayFor (line 278) | func (e *ExpectedPrepare) WillDelayFor(duration time.Duration) *Expect... method WillBeClosed (line 285) | func (e *ExpectedPrepare) WillBeClosed() *ExpectedPrepare { method ExpectQuery (line 292) | func (e *ExpectedPrepare) ExpectQuery() *ExpectedQuery { method ExpectExec (line 301) | func (e *ExpectedPrepare) ExpectExec() *ExpectedExec { method String (line 309) | func (e *ExpectedPrepare) String() string { type queryBasedExpectation (line 326) | type queryBasedExpectation struct method attemptMatch (line 332) | func (e *queryBasedExpectation) attemptMatch(sql string, args []namedV... method queryMatches (line 351) | func (e *queryBasedExpectation) queryMatches(sql string) bool { FILE: vendor/github.com/DATA-DOG/go-sqlmock/expectations_before_go18.go method WillReturnRows (line 13) | func (e *ExpectedQuery) WillReturnRows(rows *Rows) *ExpectedQuery { method argsMatches (line 18) | func (e *queryBasedExpectation) argsMatches(args []namedValue) error { FILE: vendor/github.com/DATA-DOG/go-sqlmock/expectations_go18.go method WillReturnRows (line 14) | func (e *ExpectedQuery) WillReturnRows(rows ...*Rows) *ExpectedQuery { method argsMatches (line 23) | func (e *queryBasedExpectation) argsMatches(args []namedValue) error { FILE: vendor/github.com/DATA-DOG/go-sqlmock/result.go type result (line 10) | type result struct method LastInsertId (line 33) | func (r *result) LastInsertId() (int64, error) { method RowsAffected (line 37) | func (r *result) RowsAffected() (int64, error) { function NewResult (line 18) | func NewResult(lastInsertID int64, rowsAffected int64) driver.Result { function NewErrorResult (line 27) | func NewErrorResult(err error) driver.Result { FILE: vendor/github.com/DATA-DOG/go-sqlmock/rows.go type rowSets (line 22) | type rowSets struct method Columns (line 27) | func (rs *rowSets) Columns() []string { method Close (line 31) | func (rs *rowSets) Close() error { method Next (line 36) | func (rs *rowSets) Next(dest []driver.Value) error { method String (line 51) | func (rs *rowSets) String() string { method empty (line 72) | func (rs *rowSets) empty() bool { type Rows (line 83) | type Rows struct method CloseError (line 105) | func (r *Rows) CloseError(err error) *Rows { method RowError (line 113) | func (r *Rows) RowError(row int, err error) *Rows { method AddRow (line 122) | func (r *Rows) AddRow(values ...driver.Value) *Rows { method FromCSVString (line 140) | func (r *Rows) FromCSVString(s string) *Rows { function NewRows (line 94) | func NewRows(columns []string) *Rows { FILE: vendor/github.com/DATA-DOG/go-sqlmock/rows_go18.go method HasNextResultSet (line 8) | func (rs *rowSets) HasNextResultSet() bool { method NextResultSet (line 13) | func (rs *rowSets) NextResultSet() error { FILE: vendor/github.com/DATA-DOG/go-sqlmock/sqlmock.go type Sqlmock (line 24) | type Sqlmock interface type sqlmock (line 78) | type sqlmock struct method open (line 87) | func (c *sqlmock) open() (*sql.DB, Sqlmock, error) { method ExpectClose (line 95) | func (c *sqlmock) ExpectClose() *ExpectedClose { method MatchExpectationsInOrder (line 101) | func (c *sqlmock) MatchExpectationsInOrder(b bool) { method Close (line 109) | func (c *sqlmock) Close() error { method ExpectationsWereMet (line 152) | func (c *sqlmock) ExpectationsWereMet() error { method Begin (line 169) | func (c *sqlmock) Begin() (driver.Tx, error) { method begin (line 181) | func (c *sqlmock) begin() (*ExpectedBegin, error) { method ExpectBegin (line 216) | func (c *sqlmock) ExpectBegin() *ExpectedBegin { method Exec (line 223) | func (c *sqlmock) Exec(query string, args []driver.Value) (driver.Resu... method exec (line 243) | func (c *sqlmock) exec(query string, args []namedValue) (*ExpectedExec... method ExpectExec (line 300) | func (c *sqlmock) ExpectExec(sqlRegexStr string) *ExpectedExec { method Prepare (line 309) | func (c *sqlmock) Prepare(query string) (driver.Stmt, error) { method prepare (line 321) | func (c *sqlmock) prepare(query string) (*ExpectedPrepare, error) { method ExpectPrepare (line 370) | func (c *sqlmock) ExpectPrepare(sqlRegexStr string) *ExpectedPrepare { method Query (line 384) | func (c *sqlmock) Query(query string, args []driver.Value) (driver.Row... method query (line 404) | func (c *sqlmock) query(query string, args []namedValue) (*ExpectedQue... method ExpectQuery (line 462) | func (c *sqlmock) ExpectQuery(sqlRegexStr string) *ExpectedQuery { method ExpectCommit (line 470) | func (c *sqlmock) ExpectCommit() *ExpectedCommit { method ExpectRollback (line 476) | func (c *sqlmock) ExpectRollback() *ExpectedRollback { method Commit (line 483) | func (c *sqlmock) Commit() error { method Rollback (line 518) | func (c *sqlmock) Rollback() error { type namedValue (line 377) | type namedValue struct FILE: vendor/github.com/DATA-DOG/go-sqlmock/sqlmock_go18.go method QueryContext (line 15) | func (c *sqlmock) QueryContext(ctx context.Context, query string, args [... method ExecContext (line 38) | func (c *sqlmock) ExecContext(ctx context.Context, query string, args []... method BeginTx (line 61) | func (c *sqlmock) BeginTx(ctx context.Context, opts driver.TxOptions) (d... method PrepareContext (line 79) | func (c *sqlmock) PrepareContext(ctx context.Context, query string) (dri... method Ping (line 99) | func (c *sqlmock) Ping(ctx context.Context) error { method ExecContext (line 104) | func (stmt *statement) ExecContext(ctx context.Context, args []driver.Na... method QueryContext (line 109) | func (stmt *statement) QueryContext(ctx context.Context, args []driver.N... FILE: vendor/github.com/DATA-DOG/go-sqlmock/statement.go type statement (line 7) | type statement struct method Close (line 13) | func (stmt *statement) Close() error { method NumInput (line 18) | func (stmt *statement) NumInput() int { method Exec (line 22) | func (stmt *statement) Exec(args []driver.Value) (driver.Result, error) { method Query (line 26) | func (stmt *statement) Query(args []driver.Value) (driver.Rows, error) { FILE: vendor/github.com/DATA-DOG/go-sqlmock/util.go function stripQuery (line 11) | func stripQuery(q string) (s string) { FILE: vendor/github.com/davecgh/go-spew/spew/bypass.go constant UnsafeDisabled (line 31) | UnsafeDisabled = false constant ptrSize (line 34) | ptrSize = unsafe.Sizeof((*byte)(nil)) function init (line 66) | func init() { function unsafeReflectValue (line 122) | func unsafeReflectValue(v reflect.Value) (rv reflect.Value) { FILE: vendor/github.com/davecgh/go-spew/spew/bypasssafe.go constant UnsafeDisabled (line 28) | UnsafeDisabled = true function unsafeReflectValue (line 36) | func unsafeReflectValue(v reflect.Value) reflect.Value { FILE: vendor/github.com/davecgh/go-spew/spew/common.go function catchPanic (line 72) | func catchPanic(w io.Writer, v reflect.Value) { function handleMethods (line 85) | func handleMethods(cs *ConfigState, w io.Writer, v reflect.Value) (handl... function printBool (line 144) | func printBool(w io.Writer, val bool) { function printInt (line 153) | func printInt(w io.Writer, val int64, base int) { function printUint (line 158) | func printUint(w io.Writer, val uint64, base int) { function printFloat (line 164) | func printFloat(w io.Writer, val float64, precision int) { function printComplex (line 170) | func printComplex(w io.Writer, c complex128, floatPrecision int) { function printHexPtr (line 185) | func printHexPtr(w io.Writer, p uintptr) { type valuesSorter (line 219) | type valuesSorter struct method Len (line 279) | func (s *valuesSorter) Len() int { method Swap (line 285) | func (s *valuesSorter) Swap(i, j int) { method Less (line 326) | func (s *valuesSorter) Less(i, j int) bool { function newValuesSorter (line 228) | func newValuesSorter(values []reflect.Value, cs *ConfigState) sort.Inter... function canSortSimply (line 256) | func canSortSimply(kind reflect.Kind) bool { function valueSortLess (line 295) | func valueSortLess(a, b reflect.Value) bool { function sortValues (line 336) | func sortValues(values []reflect.Value, cs *ConfigState) { FILE: vendor/github.com/davecgh/go-spew/spew/config.go type ConfigState (line 37) | type ConfigState struct method Errorf (line 115) | func (c *ConfigState) Errorf(format string, a ...interface{}) (err err... method Fprint (line 127) | func (c *ConfigState) Fprint(w io.Writer, a ...interface{}) (n int, er... method Fprintf (line 139) | func (c *ConfigState) Fprintf(w io.Writer, format string, a ...interfa... method Fprintln (line 150) | func (c *ConfigState) Fprintln(w io.Writer, a ...interface{}) (n int, ... method Print (line 162) | func (c *ConfigState) Print(a ...interface{}) (n int, err error) { method Printf (line 174) | func (c *ConfigState) Printf(format string, a ...interface{}) (n int, ... method Println (line 186) | func (c *ConfigState) Println(a ...interface{}) (n int, err error) { method Sprint (line 197) | func (c *ConfigState) Sprint(a ...interface{}) string { method Sprintf (line 208) | func (c *ConfigState) Sprintf(format string, a ...interface{}) string { method Sprintln (line 219) | func (c *ConfigState) Sprintln(a ...interface{}) string { method NewFormatter (line 240) | func (c *ConfigState) NewFormatter(v interface{}) fmt.Formatter { method Fdump (line 246) | func (c *ConfigState) Fdump(w io.Writer, a ...interface{}) { method Dump (line 273) | func (c *ConfigState) Dump(a ...interface{}) { method Sdump (line 279) | func (c *ConfigState) Sdump(a ...interface{}) string { method convertArgs (line 288) | func (c *ConfigState) convertArgs(args []interface{}) (formatters []in... function NewDefaultConfig (line 304) | func NewDefaultConfig() *ConfigState { FILE: vendor/github.com/davecgh/go-spew/spew/dump.go type dumpState (line 51) | type dumpState struct method indent (line 62) | func (d *dumpState) indent() { method unpackValue (line 73) | func (d *dumpState) unpackValue(v reflect.Value) reflect.Value { method dumpPtr (line 81) | func (d *dumpState) dumpPtr(v reflect.Value) { method dumpSlice (line 161) | func (d *dumpState) dumpSlice(v reflect.Value) { method dump (line 251) | func (d *dumpState) dump(v reflect.Value) { function fdump (line 453) | func fdump(cs *ConfigState, w io.Writer, a ...interface{}) { function Fdump (line 472) | func Fdump(w io.Writer, a ...interface{}) { function Sdump (line 478) | func Sdump(a ...interface{}) string { function Dump (line 507) | func Dump(a ...interface{}) { FILE: vendor/github.com/davecgh/go-spew/spew/format.go constant supportedFlags (line 28) | supportedFlags = "0-+# " type formatState (line 34) | type formatState struct method buildDefaultFormat (line 47) | func (f *formatState) buildDefaultFormat() (format string) { method constructOrigFormat (line 65) | func (f *formatState) constructOrigFormat(verb rune) (format string) { method unpackValue (line 94) | func (f *formatState) unpackValue(v reflect.Value) reflect.Value { method formatPtr (line 105) | func (f *formatState) formatPtr(v reflect.Value) { method format (line 201) | func (f *formatState) format(v reflect.Value) { method Format (line 371) | func (f *formatState) Format(fs fmt.State, verb rune) { function newFormatter (line 394) | func newFormatter(cs *ConfigState, v interface{}) fmt.Formatter { function NewFormatter (line 417) | func NewFormatter(v interface{}) fmt.Formatter { FILE: vendor/github.com/davecgh/go-spew/spew/spew.go function Errorf (line 32) | func Errorf(format string, a ...interface{}) (err error) { function Fprint (line 44) | func Fprint(w io.Writer, a ...interface{}) (n int, err error) { function Fprintf (line 56) | func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err e... function Fprintln (line 67) | func Fprintln(w io.Writer, a ...interface{}) (n int, err error) { function Print (line 79) | func Print(a ...interface{}) (n int, err error) { function Printf (line 91) | func Printf(format string, a ...interface{}) (n int, err error) { function Println (line 103) | func Println(a ...interface{}) (n int, err error) { function Sprint (line 114) | func Sprint(a ...interface{}) string { function Sprintf (line 125) | func Sprintf(format string, a ...interface{}) string { function Sprintln (line 136) | func Sprintln(a ...interface{}) string { function convertArgs (line 142) | func convertArgs(args []interface{}) (formatters []interface{}) { FILE: vendor/github.com/go-sql-driver/mysql/appengine.go function init (line 17) | func init() { FILE: vendor/github.com/go-sql-driver/mysql/buffer.go constant defaultBufSize (line 17) | defaultBufSize = 4096 type buffer (line 24) | type buffer struct method fill (line 41) | func (b *buffer) fill(need int) error { method readNext (line 94) | func (b *buffer) readNext(need int) ([]byte, error) { method takeBuffer (line 112) | func (b *buffer) takeBuffer(length int) []byte { method takeSmallBuffer (line 132) | func (b *buffer) takeSmallBuffer(length int) []byte { method takeCompleteBuffer (line 142) | func (b *buffer) takeCompleteBuffer() []byte { function newBuffer (line 32) | func newBuffer(nc net.Conn) buffer { FILE: vendor/github.com/go-sql-driver/mysql/collations.go constant defaultCollation (line 11) | defaultCollation = "utf8_general_ci" constant binaryCollation (line 12) | binaryCollation = "binary" FILE: vendor/github.com/go-sql-driver/mysql/connection.go type mysqlContext (line 21) | type mysqlContext interface type mysqlConn (line 30) | type mysqlConn struct method handleParams (line 54) | func (mc *mysqlConn) handleParams() (err error) { method markBadConn (line 83) | func (mc *mysqlConn) markBadConn(err error) error { method Begin (line 93) | func (mc *mysqlConn) Begin() (driver.Tx, error) { method begin (line 97) | func (mc *mysqlConn) begin(readOnly bool) (driver.Tx, error) { method Close (line 115) | func (mc *mysqlConn) Close() (err error) { method cleanup (line 130) | func (mc *mysqlConn) cleanup() { method error (line 145) | func (mc *mysqlConn) error() error { method Prepare (line 155) | func (mc *mysqlConn) Prepare(query string) (driver.Stmt, error) { method interpolateParams (line 187) | func (mc *mysqlConn) interpolateParams(query string, args []driver.Val... method Exec (line 309) | func (mc *mysqlConn) Exec(query string, args []driver.Value) (driver.R... method exec (line 339) | func (mc *mysqlConn) exec(query string) error { method Query (line 366) | func (mc *mysqlConn) Query(query string, args []driver.Value) (driver.... method query (line 370) | func (mc *mysqlConn) query(query string, args []driver.Value) (*textRo... method getSystemVar (line 417) | func (mc *mysqlConn) getSystemVar(name string) ([]byte, error) { method cancel (line 446) | func (mc *mysqlConn) cancel(err error) { method finish (line 452) | func (mc *mysqlConn) finish() { FILE: vendor/github.com/go-sql-driver/mysql/connection_go18.go method Ping (line 20) | func (mc *mysqlConn) Ping(ctx context.Context) error { method BeginTx (line 42) | func (mc *mysqlConn) BeginTx(ctx context.Context, opts driver.TxOptions)... method QueryContext (line 62) | func (mc *mysqlConn) QueryContext(ctx context.Context, query string, arg... method ExecContext (line 81) | func (mc *mysqlConn) ExecContext(ctx context.Context, query string, args... method PrepareContext (line 95) | func (mc *mysqlConn) PrepareContext(ctx context.Context, query string) (... method QueryContext (line 115) | func (stmt *mysqlStmt) QueryContext(ctx context.Context, args []driver.N... method ExecContext (line 134) | func (stmt *mysqlStmt) ExecContext(ctx context.Context, args []driver.Na... method watchCancel (line 148) | func (mc *mysqlConn) watchCancel(ctx context.Context) error { method startWatcher (line 174) | func (mc *mysqlConn) startWatcher() { method CheckNamedValue (line 199) | func (mc *mysqlConn) CheckNamedValue(nv *driver.NamedValue) (err error) { FILE: vendor/github.com/go-sql-driver/mysql/const.go constant defaultMaxAllowedPacket (line 12) | defaultMaxAllowedPacket = 4 << 20 constant minProtocolVersion (line 13) | minProtocolVersion = 10 constant maxPacketSize (line 14) | maxPacketSize = 1<<24 - 1 constant timeFormat (line 15) | timeFormat = "2006-01-02 15:04:05.999999" constant iOK (line 22) | iOK byte = 0x00 constant iLocalInFile (line 23) | iLocalInFile byte = 0xfb constant iEOF (line 24) | iEOF byte = 0xfe constant iERR (line 25) | iERR byte = 0xff type clientFlag (line 29) | type clientFlag constant clientLongPassword (line 32) | clientLongPassword clientFlag = 1 << iota constant clientFoundRows (line 33) | clientFoundRows constant clientLongFlag (line 34) | clientLongFlag constant clientConnectWithDB (line 35) | clientConnectWithDB constant clientNoSchema (line 36) | clientNoSchema constant clientCompress (line 37) | clientCompress constant clientODBC (line 38) | clientODBC constant clientLocalFiles (line 39) | clientLocalFiles constant clientIgnoreSpace (line 40) | clientIgnoreSpace constant clientProtocol41 (line 41) | clientProtocol41 constant clientInteractive (line 42) | clientInteractive constant clientSSL (line 43) | clientSSL constant clientIgnoreSIGPIPE (line 44) | clientIgnoreSIGPIPE constant clientTransactions (line 45) | clientTransactions constant clientReserved (line 46) | clientReserved constant clientSecureConn (line 47) | clientSecureConn constant clientMultiStatements (line 48) | clientMultiStatements constant clientMultiResults (line 49) | clientMultiResults constant clientPSMultiResults (line 50) | clientPSMultiResults constant clientPluginAuth (line 51) | clientPluginAuth constant clientConnectAttrs (line 52) | clientConnectAttrs constant clientPluginAuthLenEncClientData (line 53) | clientPluginAuthLenEncClientData constant clientCanHandleExpiredPasswords (line 54) | clientCanHandleExpiredPasswords constant clientSessionTrack (line 55) | clientSessionTrack constant clientDeprecateEOF (line 56) | clientDeprecateEOF constant comQuit (line 60) | comQuit byte = iota + 1 constant comInitDB (line 61) | comInitDB constant comQuery (line 62) | comQuery constant comFieldList (line 63) | comFieldList constant comCreateDB (line 64) | comCreateDB constant comDropDB (line 65) | comDropDB constant comRefresh (line 66) | comRefresh constant comShutdown (line 67) | comShutdown constant comStatistics (line 68) | comStatistics constant comProcessInfo (line 69) | comProcessInfo constant comConnect (line 70) | comConnect constant comProcessKill (line 71) | comProcessKill constant comDebug (line 72) | comDebug constant comPing (line 73) | comPing constant comTime (line 74) | comTime constant comDelayedInsert (line 75) | comDelayedInsert constant comChangeUser (line 76) | comChangeUser constant comBinlogDump (line 77) | comBinlogDump constant comTableDump (line 78) | comTableDump constant comConnectOut (line 79) | comConnectOut constant comRegisterSlave (line 80) | comRegisterSlave constant comStmtPrepare (line 81) | comStmtPrepare constant comStmtExecute (line 82) | comStmtExecute constant comStmtSendLongData (line 83) | comStmtSendLongData constant comStmtClose (line 84) | comStmtClose constant comStmtReset (line 85) | comStmtReset constant comSetOption (line 86) | comSetOption constant comStmtFetch (line 87) | comStmtFetch type fieldType (line 91) | type fieldType constant fieldTypeDecimal (line 94) | fieldTypeDecimal fieldType = iota constant fieldTypeTiny (line 95) | fieldTypeTiny constant fieldTypeShort (line 96) | fieldTypeShort constant fieldTypeLong (line 97) | fieldTypeLong constant fieldTypeFloat (line 98) | fieldTypeFloat constant fieldTypeDouble (line 99) | fieldTypeDouble constant fieldTypeNULL (line 100) | fieldTypeNULL constant fieldTypeTimestamp (line 101) | fieldTypeTimestamp constant fieldTypeLongLong (line 102) | fieldTypeLongLong constant fieldTypeInt24 (line 103) | fieldTypeInt24 constant fieldTypeDate (line 104) | fieldTypeDate constant fieldTypeTime (line 105) | fieldTypeTime constant fieldTypeDateTime (line 106) | fieldTypeDateTime constant fieldTypeYear (line 107) | fieldTypeYear constant fieldTypeNewDate (line 108) | fieldTypeNewDate constant fieldTypeVarChar (line 109) | fieldTypeVarChar constant fieldTypeBit (line 110) | fieldTypeBit constant fieldTypeJSON (line 113) | fieldTypeJSON fieldType = iota + 0xf5 constant fieldTypeNewDecimal (line 114) | fieldTypeNewDecimal constant fieldTypeEnum (line 115) | fieldTypeEnum constant fieldTypeSet (line 116) | fieldTypeSet constant fieldTypeTinyBLOB (line 117) | fieldTypeTinyBLOB constant fieldTypeMediumBLOB (line 118) | fieldTypeMediumBLOB constant fieldTypeLongBLOB (line 119) | fieldTypeLongBLOB constant fieldTypeBLOB (line 120) | fieldTypeBLOB constant fieldTypeVarString (line 121) | fieldTypeVarString constant fieldTypeString (line 122) | fieldTypeString constant fieldTypeGeometry (line 123) | fieldTypeGeometry type fieldFlag (line 126) | type fieldFlag constant flagNotNULL (line 129) | flagNotNULL fieldFlag = 1 << iota constant flagPriKey (line 130) | flagPriKey constant flagUniqueKey (line 131) | flagUniqueKey constant flagMultipleKey (line 132) | flagMultipleKey constant flagBLOB (line 133) | flagBLOB constant flagUnsigned (line 134) | flagUnsigned constant flagZeroFill (line 135) | flagZeroFill constant flagBinary (line 136) | flagBinary constant flagEnum (line 137) | flagEnum constant flagAutoIncrement (line 138) | flagAutoIncrement constant flagTimestamp (line 139) | flagTimestamp constant flagSet (line 140) | flagSet constant flagUnknown1 (line 141) | flagUnknown1 constant flagUnknown2 (line 142) | flagUnknown2 constant flagUnknown3 (line 143) | flagUnknown3 constant flagUnknown4 (line 144) | flagUnknown4 type statusFlag (line 148) | type statusFlag constant statusInTrans (line 151) | statusInTrans statusFlag = 1 << iota constant statusInAutocommit (line 152) | statusInAutocommit constant statusReserved (line 153) | statusReserved constant statusMoreResultsExists (line 154) | statusMoreResultsExists constant statusNoGoodIndexUsed (line 155) | statusNoGoodIndexUsed constant statusNoIndexUsed (line 156) | statusNoIndexUsed constant statusCursorExists (line 157) | statusCursorExists constant statusLastRowSent (line 158) | statusLastRowSent constant statusDbDropped (line 159) | statusDbDropped constant statusNoBackslashEscapes (line 160) | statusNoBackslashEscapes constant statusMetadataChanged (line 161) | statusMetadataChanged constant statusQueryWasSlow (line 162) | statusQueryWasSlow constant statusPsOutParams (line 163) | statusPsOutParams constant statusInTransReadonly (line 164) | statusInTransReadonly constant statusSessionStateChanged (line 165) | statusSessionStateChanged FILE: vendor/github.com/go-sql-driver/mysql/driver.go type watcher (line 27) | type watcher interface type MySQLDriver (line 33) | type MySQLDriver struct method Open (line 59) | func (d MySQLDriver) Open(dsn string) (driver.Conn, error) { type DialFunc (line 37) | type DialFunc function RegisterDial (line 47) | func RegisterDial(net string, dial DialFunc) { function handleAuthResult (line 156) | func handleAuthResult(mc *mysqlConn, oldCipher []byte) error { function init (line 200) | func init() { FILE: vendor/github.com/go-sql-driver/mysql/dsn.go type Config (line 34) | type Config struct method normalize (line 72) | func (cfg *Config) normalize() error { method FormatDSN (line 111) | func (cfg *Config) FormatDSN() string { function NewConfig (line 63) | func NewConfig() *Config { function ParseDSN (line 323) | func ParseDSN(dsn string) (cfg *Config, err error) { function parseDSNParams (line 401) | func parseDSNParams(cfg *Config, params string) (err error) { function ensureHavePort (line 579) | func ensureHavePort(addr string) string { FILE: vendor/github.com/go-sql-driver/mysql/errors.go type Logger (line 43) | type Logger interface function SetLogger (line 49) | func SetLogger(logger Logger) error { type MySQLError (line 58) | type MySQLError struct method Error (line 63) | func (me *MySQLError) Error() string { FILE: vendor/github.com/go-sql-driver/mysql/fields.go type mysqlField (line 118) | type mysqlField struct method typeDatabaseName (line 16) | func (mf *mysqlField) typeDatabaseName() string { method scanType (line 128) | func (mf *mysqlField) scanType() reflect.Type { FILE: vendor/github.com/go-sql-driver/mysql/infile.go function RegisterLocalFile (line 37) | func RegisterLocalFile(filePath string) { function DeregisterLocalFile (line 49) | func DeregisterLocalFile(filePath string) { function RegisterReaderHandler (line 70) | func RegisterReaderHandler(name string, handler func() io.Reader) { function DeregisterReaderHandler (line 83) | func DeregisterReaderHandler(name string) { function deferredClose (line 89) | func deferredClose(err *error, closer io.Closer) { method handleInFileRequest (line 96) | func (mc *mysqlConn) handleInFileRequest(name string) (err error) { FILE: vendor/github.com/go-sql-driver/mysql/packets.go method readPacket (line 27) | func (mc *mysqlConn) readPacket() ([]byte, error) { method writePacket (line 92) | func (mc *mysqlConn) writePacket(data []byte) error { method readInitPacket (line 157) | func (mc *mysqlConn) readInitPacket() ([]byte, error) { method writeAuthPacket (line 246) | func (mc *mysqlConn) writeAuthPacket(cipher []byte) error { method writeOldAuthPacket (line 362) | func (mc *mysqlConn) writeOldAuthPacket(cipher []byte) error { method writeClearAuthPacket (line 386) | func (mc *mysqlConn) writeClearAuthPacket() error { method writeNativeAuthPacket (line 405) | func (mc *mysqlConn) writeNativeAuthPacket(cipher []byte) error { method writeCommandPacket (line 429) | func (mc *mysqlConn) writeCommandPacket(command byte) error { method writeCommandPacketStr (line 447) | func (mc *mysqlConn) writeCommandPacketStr(command byte, arg string) err... method writeCommandPacketUint32 (line 469) | func (mc *mysqlConn) writeCommandPacketUint32(command byte, arg uint32) ... method readResultOK (line 498) | func (mc *mysqlConn) readResultOK() ([]byte, error) { method readResultSetHeaderPacket (line 540) | func (mc *mysqlConn) readResultSetHeaderPacket() (int, error) { method handleErrorPacket (line 568) | func (mc *mysqlConn) handleErrorPacket(data []byte) error { function readStatus (line 609) | func readStatus(b []byte) statusFlag { method handleOkPacket (line 615) | func (mc *mysqlConn) handleOkPacket(data []byte) error { method readColumns (line 639) | func (mc *mysqlConn) readColumns(count int) ([]mysqlField, error) { method readRow (line 739) | func (rows *textRows) readRow(dest []driver.Value) error { method readUntilEOF (line 807) | func (mc *mysqlConn) readUntilEOF() error { method readPrepareResultPacket (line 832) | func (stmt *mysqlStmt) readPrepareResultPacket() (uint16, error) { method writeCommandLongData (line 859) | func (stmt *mysqlStmt) writeCommandLongData(paramID int, arg []byte) err... method writeExecutePacket (line 912) | func (stmt *mysqlStmt) writeExecutePacket(args []driver.Value) error { method discardResults (line 1127) | func (mc *mysqlConn) discardResults() error { method readRow (line 1148) | func (rows *binaryRows) readRow(dest []driver.Value) error { FILE: vendor/github.com/go-sql-driver/mysql/result.go type mysqlResult (line 11) | type mysqlResult struct method LastInsertId (line 16) | func (res *mysqlResult) LastInsertId() (int64, error) { method RowsAffected (line 20) | func (res *mysqlResult) RowsAffected() (int64, error) { FILE: vendor/github.com/go-sql-driver/mysql/rows.go type resultSet (line 18) | type resultSet struct type mysqlRows (line 24) | type mysqlRows struct method Columns (line 38) | func (rows *mysqlRows) Columns() []string { method ColumnTypeDatabaseTypeName (line 62) | func (rows *mysqlRows) ColumnTypeDatabaseTypeName(i int) string { method ColumnTypeNullable (line 70) | func (rows *mysqlRows) ColumnTypeNullable(i int) (nullable, ok bool) { method ColumnTypePrecisionScale (line 74) | func (rows *mysqlRows) ColumnTypePrecisionScale(i int) (int64, int64, ... method ColumnTypeScanType (line 96) | func (rows *mysqlRows) ColumnTypeScanType(i int) reflect.Type { method Close (line 100) | func (rows *mysqlRows) Close() (err error) { method HasNextResultSet (line 128) | func (rows *mysqlRows) HasNextResultSet() (b bool) { method nextResultSet (line 135) | func (rows *mysqlRows) nextResultSet() (int, error) { method nextNotEmptyResultSet (line 159) | func (rows *mysqlRows) nextNotEmptyResultSet() (int, error) { type binaryRows (line 30) | type binaryRows struct method NextResultSet (line 174) | func (rows *binaryRows) NextResultSet() error { method Next (line 184) | func (rows *binaryRows) Next(dest []driver.Value) error { type textRows (line 34) | type textRows struct method NextResultSet (line 196) | func (rows *textRows) NextResultSet() (err error) { method Next (line 206) | func (rows *textRows) Next(dest []driver.Value) error { FILE: vendor/github.com/go-sql-driver/mysql/statement.go type mysqlStmt (line 19) | type mysqlStmt struct method Close (line 25) | func (stmt *mysqlStmt) Close() error { method NumInput (line 39) | func (stmt *mysqlStmt) NumInput() int { method ColumnConverter (line 43) | func (stmt *mysqlStmt) ColumnConverter(idx int) driver.ValueConverter { method Exec (line 47) | func (stmt *mysqlStmt) Exec(args []driver.Value) (driver.Result, error) { method Query (line 91) | func (stmt *mysqlStmt) Query(args []driver.Value) (driver.Rows, error) { method query (line 95) | func (stmt *mysqlStmt) query(args []driver.Value) (*binaryRows, error) { type converter (line 133) | type converter struct method ConvertValue (line 140) | func (c converter) ConvertValue(v interface{}) (driver.Value, error) { function callValuerValue (line 204) | func callValuerValue(vr driver.Valuer) (v driver.Value, err error) { FILE: vendor/github.com/go-sql-driver/mysql/transaction.go type mysqlTx (line 11) | type mysqlTx struct method Commit (line 15) | func (tx *mysqlTx) Commit() (err error) { method Rollback (line 24) | func (tx *mysqlTx) Rollback() (err error) { FILE: vendor/github.com/go-sql-driver/mysql/utils.go function RegisterTLSConfig (line 54) | func RegisterTLSConfig(key string, config *tls.Config) error { function DeregisterTLSConfig (line 70) | func DeregisterTLSConfig(key string) { function getTLSConfigClone (line 78) | func getTLSConfigClone(key string) (config *tls.Config) { function readBool (line 89) | func readBool(input string) (value bool, valid bool) { function scramblePassword (line 106) | func scramblePassword(scramble, password []byte) []byte { type myRnd (line 137) | type myRnd struct method NextByte (line 154) | func (r *myRnd) NextByte() byte { constant myRndMaxVal (line 141) | myRndMaxVal = 0x3FFFFFFF function newMyRnd (line 144) | func newMyRnd(seed1, seed2 uint32) *myRnd { function pwHash (line 162) | func pwHash(password []byte) (result [2]uint32) { function scrambleOldPassword (line 189) | func scrambleOldPassword(scramble, password []byte) []byte { type NullTime (line 232) | type NullTime struct method Scan (line 240) | func (nt *NullTime) Scan(value interface{}) (err error) { method Value (line 265) | func (nt NullTime) Value() (driver.Value, error) { function parseDateTime (line 272) | func parseDateTime(str string, loc *time.Location) (t time.Time, err err... function parseBinaryDateTime (line 295) | func parseBinaryDateTime(num uint64, data []byte, loc *time.Location) (d... constant digits01 (line 339) | digits01 = "012345678901234567890123456789012345678901234567890123456789... constant digits10 (line 340) | digits10 = "000000000011111111112222222222333333333344444444445555555555... function formatBinaryDateTime (line 342) | func formatBinaryDateTime(src []byte, length uint8, justTime bool) (driv... function uint64ToBytes (line 481) | func uint64ToBytes(n uint64) []byte { function uint64ToString (line 494) | func uint64ToString(n uint64) []byte { function stringToInt (line 517) | func stringToInt(b []byte) int { function readLengthEncodedString (line 529) | func readLengthEncodedString(b []byte) ([]byte, bool, int, error) { function skipLengthEncodedString (line 547) | func skipLengthEncodedString(b []byte) (int, error) { function readLengthEncodedInteger (line 564) | func readLengthEncodedInteger(b []byte) (uint64, bool, int) { function appendLengthEncodedInteger (line 596) | func appendLengthEncodedInteger(b []byte, n uint64) []byte { function reserveBuffer (line 613) | func reserveBuffer(buf []byte, appendSize int) []byte { function escapeBytesBackslash (line 629) | func escapeBytesBackslash(buf, v []byte) []byte { function escapeStringBackslash (line 673) | func escapeStringBackslash(buf []byte, v string) []byte { function escapeBytesQuotes (line 722) | func escapeBytesQuotes(buf, v []byte) []byte { function escapeStringQuotes (line 741) | func escapeStringQuotes(buf []byte, v string) []byte { type noCopy (line 769) | type noCopy struct method Lock (line 772) | func (*noCopy) Lock() {} type atomicBool (line 776) | type atomicBool struct method IsSet (line 782) | func (ab *atomicBool) IsSet() bool { method Set (line 787) | func (ab *atomicBool) Set(value bool) { method TrySet (line 796) | func (ab *atomicBool) TrySet(value bool) bool { type atomicError (line 804) | type atomicError struct method Set (line 811) | func (ae *atomicError) Set(value error) { method Value (line 816) | func (ae *atomicError) Value() error { FILE: vendor/github.com/go-sql-driver/mysql/utils_go17.go function cloneTLSConfig (line 16) | func cloneTLSConfig(c *tls.Config) *tls.Config { FILE: vendor/github.com/go-sql-driver/mysql/utils_go18.go function cloneTLSConfig (line 21) | func cloneTLSConfig(c *tls.Config) *tls.Config { function namedValueToValue (line 25) | func namedValueToValue(named []driver.NamedValue) ([]driver.Value, error) { function mapIsolationLevel (line 37) | func mapIsolationLevel(level driver.IsolationLevel) (string, error) { FILE: vendor/github.com/google/wire/wire.go type ProviderSet (line 29) | type ProviderSet struct function NewSet (line 55) | func NewSet(...interface{}) ProviderSet { function Build (line 86) | func Build(...interface{}) string { type Binding (line 91) | type Binding struct function Bind (line 110) | func Bind(iface, to interface{}) Binding { type ProvidedValue (line 115) | type ProvidedValue struct function Value (line 123) | func Value(interface{}) ProvidedValue { function InterfaceValue (line 132) | func InterfaceValue(typ interface{}, x interface{}) ProvidedValue { FILE: vendor/github.com/gorilla/context/context.go function Set (line 20) | func Set(r *http.Request, key, val interface{}) { function Get (line 31) | func Get(r *http.Request, key interface{}) interface{} { function GetOk (line 43) | func GetOk(r *http.Request, key interface{}) (interface{}, bool) { function GetAll (line 55) | func GetAll(r *http.Request) map[interface{}]interface{} { function GetAllOk (line 71) | func GetAllOk(r *http.Request) (map[interface{}]interface{}, bool) { function Delete (line 83) | func Delete(r *http.Request, key interface{}) { function Clear (line 95) | func Clear(r *http.Request) { function clear (line 102) | func clear(r *http.Request) { function Purge (line 116) | func Purge(maxAge int) int { function ClearHandler (line 138) | func ClearHandler(h http.Handler) http.Handler { FILE: vendor/github.com/gorilla/mux/context_gorilla.go function contextGet (line 11) | func contextGet(r *http.Request, key interface{}) interface{} { function contextSet (line 15) | func contextSet(r *http.Request, key, val interface{}) *http.Request { function contextClear (line 24) | func contextClear(r *http.Request) { FILE: vendor/github.com/gorilla/mux/context_native.go function contextGet (line 10) | func contextGet(r *http.Request, key interface{}) interface{} { function contextSet (line 14) | func contextSet(r *http.Request, key, val interface{}) *http.Request { function contextClear (line 22) | func contextClear(r *http.Request) { FILE: vendor/github.com/gorilla/mux/middleware.go type MiddlewareFunc (line 8) | type MiddlewareFunc method Middleware (line 16) | func (mw MiddlewareFunc) Middleware(handler http.Handler) http.Handler { type middleware (line 11) | type middleware interface method Use (line 21) | func (r *Router) Use(mwf ...MiddlewareFunc) { method useInterface (line 28) | func (r *Router) useInterface(mw middleware) { FILE: vendor/github.com/gorilla/mux/mux.go function NewRouter (line 21) | func NewRouter() *Router { type Router (line 43) | type Router struct method Match (line 81) | func (r *Router) Match(req *http.Request, match *RouteMatch) bool { method ServeHTTP (line 118) | func (r *Router) ServeHTTP(w http.ResponseWriter, req *http.Request) { method Get (line 163) | func (r *Router) Get(name string) *Route { method GetRoute (line 169) | func (r *Router) GetRoute(name string) *Route { method StrictSlash (line 192) | func (r *Router) StrictSlash(value bool) *Router { method SkipClean (line 205) | func (r *Router) SkipClean(value bool) *Router { method UseEncodedPath (line 216) | func (r *Router) UseEncodedPath() *Router { method getBuildScheme (line 225) | func (r *Router) getBuildScheme() string { method getNamedRoutes (line 233) | func (r *Router) getNamedRoutes() map[string]*Route { method getRegexpGroup (line 245) | func (r *Router) getRegexpGroup() *routeRegexpGroup { method buildVars (line 252) | func (r *Router) buildVars(m map[string]string) map[string]string { method NewRoute (line 264) | func (r *Router) NewRoute() *Route { method Handle (line 272) | func (r *Router) Handle(path string, handler http.Handler) *Route { method HandleFunc (line 278) | func (r *Router) HandleFunc(path string, f func(http.ResponseWriter, method Headers (line 285) | func (r *Router) Headers(pairs ...string) *Route { method Host (line 291) | func (r *Router) Host(tpl string) *Route { method MatcherFunc (line 297) | func (r *Router) MatcherFunc(f MatcherFunc) *Route { method Methods (line 303) | func (r *Router) Methods(methods ...string) *Route { method Path (line 309) | func (r *Router) Path(tpl string) *Route { method PathPrefix (line 315) | func (r *Router) PathPrefix(tpl string) *Route { method Queries (line 321) | func (r *Router) Queries(pairs ...string) *Route { method Schemes (line 327) | func (r *Router) Schemes(schemes ...string) *Route { method BuildVarsFunc (line 333) | func (r *Router) BuildVarsFunc(f BuildVarsFunc) *Route { method Walk (line 340) | func (r *Router) Walk(walkFn WalkFunc) error { method walk (line 353) | func (r *Router) walk(walkFn WalkFunc, ancestors []*Route) error { type WalkFunc (line 351) | type WalkFunc type RouteMatch (line 389) | type RouteMatch struct type contextKey (line 400) | type contextKey constant varsKey (line 403) | varsKey contextKey = iota constant routeKey (line 404) | routeKey function Vars (line 408) | func Vars(r *http.Request) map[string]string { function CurrentRoute (line 420) | func CurrentRoute(r *http.Request) *Route { function setVars (line 427) | func setVars(r *http.Request, val interface{}) *http.Request { function setCurrentRoute (line 431) | func setCurrentRoute(r *http.Request, val interface{}) *http.Request { function cleanPath (line 441) | func cleanPath(p string) string { function uniqueVars (line 459) | func uniqueVars(s1, s2 []string) error { function checkPairs (line 472) | func checkPairs(pairs ...string) (int, error) { function mapFromPairsToString (line 483) | func mapFromPairsToString(pairs ...string) (map[string]string, error) { function mapFromPairsToRegex (line 497) | func mapFromPairsToRegex(pairs ...string) (map[string]*regexp.Regexp, er... function matchInArray (line 514) | func matchInArray(arr []string, value string) bool { function matchMapWithString (line 524) | func matchMapWithString(toCheck map[string]string, toMatch map[string][]... function matchMapWithRegex (line 552) | func matchMapWithRegex(toCheck map[string]*regexp.Regexp, toMatch map[st... function methodNotAllowed (line 579) | func methodNotAllowed(w http.ResponseWriter, r *http.Request) { function methodNotAllowedHandler (line 585) | func methodNotAllowedHandler() http.Handler { return http.HandlerFunc(me... FILE: vendor/github.com/gorilla/mux/regexp.go type routeRegexpOptions (line 17) | type routeRegexpOptions struct type regexpType (line 22) | type regexpType constant regexpTypePath (line 25) | regexpTypePath regexpType = 0 constant regexpTypeHost (line 26) | regexpTypeHost regexpType = 1 constant regexpTypePrefix (line 27) | regexpTypePrefix regexpType = 2 constant regexpTypeQuery (line 28) | regexpTypeQuery regexpType = 3 function newRouteRegexp (line 41) | func newRouteRegexp(tpl string, typ regexpType, options routeRegexpOptio... type routeRegexp (line 146) | type routeRegexp struct method Match (line 164) | func (r *routeRegexp) Match(req *http.Request, match *RouteMatch) bool { method url (line 180) | func (r *routeRegexp) url(values map[string]string) (string, error) { method getURLQuery (line 211) | func (r *routeRegexp) getURLQuery(req *http.Request) string { method matchQueryString (line 224) | func (r *routeRegexp) matchQueryString(req *http.Request) bool { function braceIndices (line 230) | func braceIndices(s string) ([]int, error) { function varGroupName (line 254) | func varGroupName(idx int) string { type routeRegexpGroup (line 263) | type routeRegexpGroup struct method setMatch (line 270) | func (v *routeRegexpGroup) setMatch(req *http.Request, m *RouteMatch, ... function getHost (line 315) | func getHost(r *http.Request) string { function extractVars (line 328) | func extractVars(input string, matches []int, names []string, output map... FILE: vendor/github.com/gorilla/mux/route.go type Route (line 17) | type Route struct method SkipClean (line 46) | func (r *Route) SkipClean() bool { method Match (line 51) | func (r *Route) Match(req *http.Request, match *RouteMatch) bool { method GetError (line 105) | func (r *Route) GetError() error { method BuildOnly (line 110) | func (r *Route) BuildOnly() *Route { method Handler (line 118) | func (r *Route) Handler(handler http.Handler) *Route { method HandlerFunc (line 126) | func (r *Route) HandlerFunc(f func(http.ResponseWriter, *http.Request)... method GetHandler (line 131) | func (r *Route) GetHandler() http.Handler { method Name (line 139) | func (r *Route) Name(name string) *Route { method GetName (line 152) | func (r *Route) GetName() string { method addMatcher (line 166) | func (r *Route) addMatcher(m matcher) *Route { method addRegexpMatcher (line 174) | func (r *Route) addRegexpMatcher(tpl string, typ regexpType) error { method Headers (line 240) | func (r *Route) Headers(pairs ...string) *Route { method HeadersRegexp (line 266) | func (r *Route) HeadersRegexp(pairs ...string) *Route { method Host (line 294) | func (r *Route) Host(tpl string) *Route { method MatcherFunc (line 310) | func (r *Route) MatcherFunc(f MatcherFunc) *Route { method Methods (line 326) | func (r *Route) Methods(methods ...string) *Route { method Path (line 354) | func (r *Route) Path(tpl string) *Route { method PathPrefix (line 370) | func (r *Route) PathPrefix(tpl string) *Route { method Queries (line 394) | func (r *Route) Queries(pairs ...string) *Route { method Schemes (line 421) | func (r *Route) Schemes(schemes ...string) *Route { method BuildVarsFunc (line 439) | func (r *Route) BuildVarsFunc(f BuildVarsFunc) *Route { method Subrouter (line 458) | func (r *Route) Subrouter() *Router { method URL (line 499) | func (r *Route) URL(pairs ...string) (*url.URL, error) { method URLHost (line 544) | func (r *Route) URLHost(pairs ...string) (*url.URL, error) { method URLPath (line 572) | func (r *Route) URLPath(pairs ...string) (*url.URL, error) { method GetPathTemplate (line 597) | func (r *Route) GetPathTemplate() (string, error) { method GetPathRegexp (line 611) | func (r *Route) GetPathRegexp() (string, error) { method GetQueriesRegexp (line 626) | func (r *Route) GetQueriesRegexp() ([]string, error) { method GetQueriesTemplates (line 645) | func (r *Route) GetQueriesTemplates() ([]string, error) { method GetMethods (line 663) | func (r *Route) GetMethods() ([]string, error) { method GetHostTemplate (line 680) | func (r *Route) GetHostTemplate() (string, error) { method prepareVars (line 692) | func (r *Route) prepareVars(pairs ...string) (map[string]string, error) { method buildVars (line 700) | func (r *Route) buildVars(m map[string]string) map[string]string { method getBuildScheme (line 722) | func (r *Route) getBuildScheme() string { method getNamedRoutes (line 733) | func (r *Route) getNamedRoutes() map[string]*Route { method getRegexpGroup (line 742) | func (r *Route) getRegexpGroup() *routeRegexpGroup { type matcher (line 161) | type matcher interface type headerMatcher (line 225) | type headerMatcher method Match (line 227) | func (m headerMatcher) Match(r *http.Request, match *RouteMatch) bool { type headerRegexMatcher (line 250) | type headerRegexMatcher method Match (line 252) | func (m headerRegexMatcher) Match(r *http.Request, match *RouteMatch) ... type MatcherFunc (line 302) | type MatcherFunc method Match (line 305) | func (m MatcherFunc) Match(r *http.Request, match *RouteMatch) bool { type methodMatcher (line 317) | type methodMatcher method Match (line 319) | func (m methodMatcher) Match(r *http.Request, match *RouteMatch) bool { type schemeMatcher (line 413) | type schemeMatcher method Match (line 415) | func (m schemeMatcher) Match(r *http.Request, match *RouteMatch) bool { type BuildVarsFunc (line 435) | type BuildVarsFunc type parentRoute (line 715) | type parentRoute interface FILE: vendor/github.com/gorilla/mux/test_helpers.go function SetURLVars (line 17) | func SetURLVars(r *http.Request, val map[string]string) *http.Request { FILE: vendor/github.com/pmezard/go-difflib/difflib/difflib.go function min (line 26) | func min(a, b int) int { function max (line 33) | func max(a, b int) int { function calculateRatio (line 40) | func calculateRatio(matches, length int) float64 { type Match (line 47) | type Match struct type OpCode (line 53) | type OpCode struct type SequenceMatcher (line 87) | type SequenceMatcher struct method SetSeqs (line 115) | func (m *SequenceMatcher) SetSeqs(a, b []string) { method SetSeq1 (line 129) | func (m *SequenceMatcher) SetSeq1(a []string) { method SetSeq2 (line 140) | func (m *SequenceMatcher) SetSeq2(b []string) { method chainB (line 151) | func (m *SequenceMatcher) chainB() { method isBJunk (line 192) | func (m *SequenceMatcher) isBJunk(s string) bool { method findLongestMatch (line 221) | func (m *SequenceMatcher) findLongestMatch(alo, ahi, blo, bhi int) Mat... method GetMatchingBlocks (line 305) | func (m *SequenceMatcher) GetMatchingBlocks() []Match { method GetOpCodes (line 373) | func (m *SequenceMatcher) GetOpCodes() []OpCode { method GetGroupedOpCodes (line 413) | func (m *SequenceMatcher) GetGroupedOpCodes(n int) [][]OpCode { method Ratio (line 465) | func (m *SequenceMatcher) Ratio() float64 { method QuickRatio (line 477) | func (m *SequenceMatcher) QuickRatio() float64 { method RealQuickRatio (line 509) | func (m *SequenceMatcher) RealQuickRatio() float64 { function NewMatcher (line 100) | func NewMatcher(a, b []string) *SequenceMatcher { function NewMatcherWithJunk (line 106) | func NewMatcherWithJunk(a, b []string, autoJunk bool, function formatRangeUnified (line 515) | func formatRangeUnified(start, stop int) string { type UnifiedDiff (line 529) | type UnifiedDiff struct function WriteUnifiedDiff (line 559) | func WriteUnifiedDiff(writer io.Writer, diff UnifiedDiff) error { function GetUnifiedDiffString (line 629) | func GetUnifiedDiffString(diff UnifiedDiff) (string, error) { function formatRangeContext (line 636) | func formatRangeContext(start, stop int) string { type ContextDiff (line 649) | type ContextDiff function WriteContextDiff (line 668) | func WriteContextDiff(writer io.Writer, diff ContextDiff) error { function GetContextDiffString (line 746) | func GetContextDiffString(diff ContextDiff) (string, error) { function SplitLines (line 754) | func SplitLines(s string) []string { FILE: vendor/github.com/stretchr/objx/accessors.go constant arrayAccesRegexString (line 12) | arrayAccesRegexString = `^(.+)\[([0-9]+)\]$` method Get (line 30) | func (m Map) Get(selector string) *Value { method Set (line 45) | func (m Map) Set(selector string, value interface{}) Map { function access (line 52) | func access(current, selector, value interface{}, isSet, panics bool) in... function intFromInterface (line 151) | func intFromInterface(selector interface{}) int { FILE: vendor/github.com/stretchr/objx/constants.go constant PathSeparator (line 8) | PathSeparator string = "." constant SignatureSeparator (line 12) | SignatureSeparator = "_" FILE: vendor/github.com/stretchr/objx/conversions.go method JSON (line 14) | func (m Map) JSON() (string, error) { method MustJSON (line 28) | func (m Map) MustJSON() string { method Base64 (line 38) | func (m Map) Base64() (string, error) { method MustBase64 (line 58) | func (m Map) MustBase64() string { method SignedBase64 (line 69) | func (m Map) SignedBase64(key string) (string, error) { method MustSignedBase64 (line 85) | func (m Map) MustSignedBase64(key string) string { method URLValues (line 100) | func (m Map) URLValues() url.Values { method URLQuery (line 115) | func (m Map) URLQuery() (string, error) { FILE: vendor/github.com/stretchr/objx/map.go type MSIConvertable (line 14) | type MSIConvertable interface type Map (line 22) | type Map method Value (line 25) | func (m Map) Value() *Value { function New (line 35) | func New(data interface{}) Map { function MSI (line 62) | func MSI(keyAndValuePairs ...interface{}) Map { function MustFromJSON (line 95) | func MustFromJSON(jsonString string) Map { function FromJSON (line 109) | func FromJSON(jsonString string) (Map, error) { function FromBase64 (line 126) | func FromBase64(base64String string) (Map, error) { function MustFromBase64 (line 142) | func MustFromBase64(base64String string) Map { function FromSignedBase64 (line 157) | func FromSignedBase64(base64String, key string) (Map, error) { function MustFromSignedBase64 (line 175) | func MustFromSignedBase64(base64String, key string) Map { function FromURLQuery (line 190) | func FromURLQuery(query string) (Map, error) { function MustFromURLQuery (line 212) | func MustFromURLQuery(query string) Map { FILE: vendor/github.com/stretchr/objx/mutations.go method Exclude (line 5) | func (d Map) Exclude(exclude []string) Map { method Copy (line 25) | func (m Map) Copy() Map { method Merge (line 37) | func (m Map) Merge(merge Map) Map { method MergeHere (line 46) | func (m Map) MergeHere(merge Map) Map { method Transform (line 59) | func (m Map) Transform(transformer func(key string, value interface{}) (... method TransformKeys (line 72) | func (m Map) TransformKeys(mapping map[string]string) Map { FILE: vendor/github.com/stretchr/objx/security.go function HashWithKey (line 10) | func HashWithKey(data, key string) string { FILE: vendor/github.com/stretchr/objx/tests.go method Has (line 7) | func (m Map) Has(selector string) bool { method IsNil (line 15) | func (v *Value) IsNil() bool { FILE: vendor/github.com/stretchr/objx/type_specific_codegen.go method Inter (line 10) | func (v *Value) Inter(optionalDefault ...interface{}) interface{} { method MustInter (line 23) | func (v *Value) MustInter() interface{} { method InterSlice (line 29) | func (v *Value) InterSlice(optionalDefault ...[]interface{}) []interface... method MustInterSlice (line 42) | func (v *Value) MustInterSlice() []interface{} { method IsInter (line 47) | func (v *Value) IsInter() bool { method IsInterSlice (line 53) | func (v *Value) IsInterSlice() bool { method EachInter (line 62) | func (v *Value) EachInter(callback func(int, interface{}) bool) *Value { method WhereInter (line 78) | func (v *Value) WhereInter(decider func(int, interface{}) bool) *Value { method GroupInter (line 97) | func (v *Value) GroupInter(grouper func(int, interface{}) string) *Value { method ReplaceInter (line 117) | func (v *Value) ReplaceInter(replacer func(int, interface{}) interface{}... method CollectInter (line 134) | func (v *Value) CollectInter(collector func(int, interface{}) interface{... method MSI (line 154) | func (v *Value) MSI(optionalDefault ...map[string]interface{}) map[strin... method MustMSI (line 167) | func (v *Value) MustMSI() map[string]interface{} { method MSISlice (line 173) | func (v *Value) MSISlice(optionalDefault ...[]map[string]interface{}) []... method MustMSISlice (line 186) | func (v *Value) MustMSISlice() []map[string]interface{} { method IsMSI (line 191) | func (v *Value) IsMSI() bool { method IsMSISlice (line 197) | func (v *Value) IsMSISlice() bool { method EachMSI (line 206) | func (v *Value) EachMSI(callback func(int, map[string]interface{}) bool)... method WhereMSI (line 222) | func (v *Value) WhereMSI(decider func(int, map[string]interface{}) bool)... method GroupMSI (line 241) | func (v *Value) GroupMSI(grouper func(int, map[string]interface{}) strin... method ReplaceMSI (line 261) | func (v *Value) ReplaceMSI(replacer func(int, map[string]interface{}) ma... method CollectMSI (line 278) | func (v *Value) CollectMSI(collector func(int, map[string]interface{}) i... method ObjxMap (line 298) | func (v *Value) ObjxMap(optionalDefault ...(Map)) Map { method MustObjxMap (line 311) | func (v *Value) MustObjxMap() Map { method ObjxMapSlice (line 317) | func (v *Value) ObjxMapSlice(optionalDefault ...[](Map)) [](Map) { method MustObjxMapSlice (line 330) | func (v *Value) MustObjxMapSlice() [](Map) { method IsObjxMap (line 335) | func (v *Value) IsObjxMap() bool { method IsObjxMapSlice (line 341) | func (v *Value) IsObjxMapSlice() bool { method EachObjxMap (line 350) | func (v *Value) EachObjxMap(callback func(int, Map) bool) *Value { method WhereObjxMap (line 366) | func (v *Value) WhereObjxMap(decider func(int, Map) bool) *Value { method GroupObjxMap (line 385) | func (v *Value) GroupObjxMap(grouper func(int, Map) string) *Value { method ReplaceObjxMap (line 405) | func (v *Value) ReplaceObjxMap(replacer func(int, Map) Map) *Value { method CollectObjxMap (line 422) | func (v *Value) CollectObjxMap(collector func(int, Map) interface{}) *Va... method Bool (line 442) | func (v *Value) Bool(optionalDefault ...bool) bool { method MustBool (line 455) | func (v *Value) MustBool() bool { method BoolSlice (line 461) | func (v *Value) BoolSlice(optionalDefault ...[]bool) []bool { method MustBoolSlice (line 474) | func (v *Value) MustBoolSlice() []bool { method IsBool (line 479) | func (v *Value) IsBool() bool { method IsBoolSlice (line 485) | func (v *Value) IsBoolSlice() bool { method EachBool (line 494) | func (v *Value) EachBool(callback func(int, bool) bool) *Value { method WhereBool (line 510) | func (v *Value) WhereBool(decider func(int, bool) bool) *Value { method GroupBool (line 529) | func (v *Value) GroupBool(grouper func(int, bool) string) *Value { method ReplaceBool (line 549) | func (v *Value) ReplaceBool(replacer func(int, bool) bool) *Value { method CollectBool (line 566) | func (v *Value) CollectBool(collector func(int, bool) interface{}) *Value { method Str (line 586) | func (v *Value) Str(optionalDefault ...string) string { method MustStr (line 599) | func (v *Value) MustStr() string { method StrSlice (line 605) | func (v *Value) StrSlice(optionalDefault ...[]string) []string { method MustStrSlice (line 618) | func (v *Value) MustStrSlice() []string { method IsStr (line 623) | func (v *Value) IsStr() bool { method IsStrSlice (line 629) | func (v *Value) IsStrSlice() bool { method EachStr (line 638) | func (v *Value) EachStr(callback func(int, string) bool) *Value { method WhereStr (line 654) | func (v *Value) WhereStr(decider func(int, string) bool) *Value { method GroupStr (line 673) | func (v *Value) GroupStr(grouper func(int, string) string) *Value { method ReplaceStr (line 693) | func (v *Value) ReplaceStr(replacer func(int, string) string) *Value { method CollectStr (line 710) | func (v *Value) CollectStr(collector func(int, string) interface{}) *Val... method Int (line 730) | func (v *Value) Int(optionalDefault ...int) int { method MustInt (line 743) | func (v *Value) MustInt() int { method IntSlice (line 749) | func (v *Value) IntSlice(optionalDefault ...[]int) []int { method MustIntSlice (line 762) | func (v *Value) MustIntSlice() []int { method IsInt (line 767) | func (v *Value) IsInt() bool { method IsIntSlice (line 773) | func (v *Value) IsIntSlice() bool { method EachInt (line 782) | func (v *Value) EachInt(callback func(int, int) bool) *Value { method WhereInt (line 798) | func (v *Value) WhereInt(decider func(int, int) bool) *Value { method GroupInt (line 817) | func (v *Value) GroupInt(grouper func(int, int) string) *Value { method ReplaceInt (line 837) | func (v *Value) ReplaceInt(replacer func(int, int) int) *Value { method CollectInt (line 854) | func (v *Value) CollectInt(collector func(int, int) interface{}) *Value { method Int8 (line 874) | func (v *Value) Int8(optionalDefault ...int8) int8 { method MustInt8 (line 887) | func (v *Value) MustInt8() int8 { method Int8Slice (line 893) | func (v *Value) Int8Slice(optionalDefault ...[]int8) []int8 { method MustInt8Slice (line 906) | func (v *Value) MustInt8Slice() []int8 { method IsInt8 (line 911) | func (v *Value) IsInt8() bool { method IsInt8Slice (line 917) | func (v *Value) IsInt8Slice() bool { method EachInt8 (line 926) | func (v *Value) EachInt8(callback func(int, int8) bool) *Value { method WhereInt8 (line 942) | func (v *Value) WhereInt8(decider func(int, int8) bool) *Value { method GroupInt8 (line 961) | func (v *Value) GroupInt8(grouper func(int, int8) string) *Value { method ReplaceInt8 (line 981) | func (v *Value) ReplaceInt8(replacer func(int, int8) int8) *Value { method CollectInt8 (line 998) | func (v *Value) CollectInt8(collector func(int, int8) interface{}) *Value { method Int16 (line 1018) | func (v *Value) Int16(optionalDefault ...int16) int16 { method MustInt16 (line 1031) | func (v *Value) MustInt16() int16 { method Int16Slice (line 1037) | func (v *Value) Int16Slice(optionalDefault ...[]int16) []int16 { method MustInt16Slice (line 1050) | func (v *Value) MustInt16Slice() []int16 { method IsInt16 (line 1055) | func (v *Value) IsInt16() bool { method IsInt16Slice (line 1061) | func (v *Value) IsInt16Slice() bool { method EachInt16 (line 1070) | func (v *Value) EachInt16(callback func(int, int16) bool) *Value { method WhereInt16 (line 1086) | func (v *Value) WhereInt16(decider func(int, int16) bool) *Value { method GroupInt16 (line 1105) | func (v *Value) GroupInt16(grouper func(int, int16) string) *Value { method ReplaceInt16 (line 1125) | func (v *Value) ReplaceInt16(replacer func(int, int16) int16) *Value { method CollectInt16 (line 1142) | func (v *Value) CollectInt16(collector func(int, int16) interface{}) *Va... method Int32 (line 1162) | func (v *Value) Int32(optionalDefault ...int32) int32 { method MustInt32 (line 1175) | func (v *Value) MustInt32() int32 { method Int32Slice (line 1181) | func (v *Value) Int32Slice(optionalDefault ...[]int32) []int32 { method MustInt32Slice (line 1194) | func (v *Value) MustInt32Slice() []int32 { method IsInt32 (line 1199) | func (v *Value) IsInt32() bool { method IsInt32Slice (line 1205) | func (v *Value) IsInt32Slice() bool { method EachInt32 (line 1214) | func (v *Value) EachInt32(callback func(int, int32) bool) *Value { method WhereInt32 (line 1230) | func (v *Value) WhereInt32(decider func(int, int32) bool) *Value { method GroupInt32 (line 1249) | func (v *Value) GroupInt32(grouper func(int, int32) string) *Value { method ReplaceInt32 (line 1269) | func (v *Value) ReplaceInt32(replacer func(int, int32) int32) *Value { method CollectInt32 (line 1286) | func (v *Value) CollectInt32(collector func(int, int32) interface{}) *Va... method Int64 (line 1306) | func (v *Value) Int64(optionalDefault ...int64) int64 { method MustInt64 (line 1319) | func (v *Value) MustInt64() int64 { method Int64Slice (line 1325) | func (v *Value) Int64Slice(optionalDefault ...[]int64) []int64 { method MustInt64Slice (line 1338) | func (v *Value) MustInt64Slice() []int64 { method IsInt64 (line 1343) | func (v *Value) IsInt64() bool { method IsInt64Slice (line 1349) | func (v *Value) IsInt64Slice() bool { method EachInt64 (line 1358) | func (v *Value) EachInt64(callback func(int, int64) bool) *Value { method WhereInt64 (line 1374) | func (v *Value) WhereInt64(decider func(int, int64) bool) *Value { method GroupInt64 (line 1393) | func (v *Value) GroupInt64(grouper func(int, int64) string) *Value { method ReplaceInt64 (line 1413) | func (v *Value) ReplaceInt64(replacer func(int, int64) int64) *Value { method CollectInt64 (line 1430) | func (v *Value) CollectInt64(collector func(int, int64) interface{}) *Va... method Uint (line 1450) | func (v *Value) Uint(optionalDefault ...uint) uint { method MustUint (line 1463) | func (v *Value) MustUint() uint { method UintSlice (line 1469) | func (v *Value) UintSlice(optionalDefault ...[]uint) []uint { method MustUintSlice (line 1482) | func (v *Value) MustUintSlice() []uint { method IsUint (line 1487) | func (v *Value) IsUint() bool { method IsUintSlice (line 1493) | func (v *Value) IsUintSlice() bool { method EachUint (line 1502) | func (v *Value) EachUint(callback func(int, uint) bool) *Value { method WhereUint (line 1518) | func (v *Value) WhereUint(decider func(int, uint) bool) *Value { method GroupUint (line 1537) | func (v *Value) GroupUint(grouper func(int, uint) string) *Value { method ReplaceUint (line 1557) | func (v *Value) ReplaceUint(replacer func(int, uint) uint) *Value { method CollectUint (line 1574) | func (v *Value) CollectUint(collector func(int, uint) interface{}) *Value { method Uint8 (line 1594) | func (v *Value) Uint8(optionalDefault ...uint8) uint8 { method MustUint8 (line 1607) | func (v *Value) MustUint8() uint8 { method Uint8Slice (line 1613) | func (v *Value) Uint8Slice(optionalDefault ...[]uint8) []uint8 { method MustUint8Slice (line 1626) | func (v *Value) MustUint8Slice() []uint8 { method IsUint8 (line 1631) | func (v *Value) IsUint8() bool { method IsUint8Slice (line 1637) | func (v *Value) IsUint8Slice() bool { method EachUint8 (line 1646) | func (v *Value) EachUint8(callback func(int, uint8) bool) *Value { method WhereUint8 (line 1662) | func (v *Value) WhereUint8(decider func(int, uint8) bool) *Value { method GroupUint8 (line 1681) | func (v *Value) GroupUint8(grouper func(int, uint8) string) *Value { method ReplaceUint8 (line 1701) | func (v *Value) ReplaceUint8(replacer func(int, uint8) uint8) *Value { method CollectUint8 (line 1718) | func (v *Value) CollectUint8(collector func(int, uint8) interface{}) *Va... method Uint16 (line 1738) | func (v *Value) Uint16(optionalDefault ...uint16) uint16 { method MustUint16 (line 1751) | func (v *Value) MustUint16() uint16 { method Uint16Slice (line 1757) | func (v *Value) Uint16Slice(optionalDefault ...[]uint16) []uint16 { method MustUint16Slice (line 1770) | func (v *Value) MustUint16Slice() []uint16 { method IsUint16 (line 1775) | func (v *Value) IsUint16() bool { method IsUint16Slice (line 1781) | func (v *Value) IsUint16Slice() bool { method EachUint16 (line 1790) | func (v *Value) EachUint16(callback func(int, uint16) bool) *Value { method WhereUint16 (line 1806) | func (v *Value) WhereUint16(decider func(int, uint16) bool) *Value { method GroupUint16 (line 1825) | func (v *Value) GroupUint16(grouper func(int, uint16) string) *Value { method ReplaceUint16 (line 1845) | func (v *Value) ReplaceUint16(replacer func(int, uint16) uint16) *Value { method CollectUint16 (line 1862) | func (v *Value) CollectUint16(collector func(int, uint16) interface{}) *... method Uint32 (line 1882) | func (v *Value) Uint32(optionalDefault ...uint32) uint32 { method MustUint32 (line 1895) | func (v *Value) MustUint32() uint32 { method Uint32Slice (line 1901) | func (v *Value) Uint32Slice(optionalDefault ...[]uint32) []uint32 { method MustUint32Slice (line 1914) | func (v *Value) MustUint32Slice() []uint32 { method IsUint32 (line 1919) | func (v *Value) IsUint32() bool { method IsUint32Slice (line 1925) | func (v *Value) IsUint32Slice() bool { method EachUint32 (line 1934) | func (v *Value) EachUint32(callback func(int, uint32) bool) *Value { method WhereUint32 (line 1950) | func (v *Value) WhereUint32(decider func(int, uint32) bool) *Value { method GroupUint32 (line 1969) | func (v *Value) GroupUint32(grouper func(int, uint32) string) *Value { method ReplaceUint32 (line 1989) | func (v *Value) ReplaceUint32(replacer func(int, uint32) uint32) *Value { method CollectUint32 (line 2006) | func (v *Value) CollectUint32(collector func(int, uint32) interface{}) *... method Uint64 (line 2026) | func (v *Value) Uint64(optionalDefault ...uint64) uint64 { method MustUint64 (line 2039) | func (v *Value) MustUint64() uint64 { method Uint64Slice (line 2045) | func (v *Value) Uint64Slice(optionalDefault ...[]uint64) []uint64 { method MustUint64Slice (line 2058) | func (v *Value) MustUint64Slice() []uint64 { method IsUint64 (line 2063) | func (v *Value) IsUint64() bool { method IsUint64Slice (line 2069) | func (v *Value) IsUint64Slice() bool { method EachUint64 (line 2078) | func (v *Value) EachUint64(callback func(int, uint64) bool) *Value { method WhereUint64 (line 2094) | func (v *Value) WhereUint64(decider func(int, uint64) bool) *Value { method GroupUint64 (line 2113) | func (v *Value) GroupUint64(grouper func(int, uint64) string) *Value { method ReplaceUint64 (line 2133) | func (v *Value) ReplaceUint64(replacer func(int, uint64) uint64) *Value { method CollectUint64 (line 2150) | func (v *Value) CollectUint64(collector func(int, uint64) interface{}) *... method Uintptr (line 2170) | func (v *Value) Uintptr(optionalDefault ...uintptr) uintptr { method MustUintptr (line 2183) | func (v *Value) MustUintptr() uintptr { method UintptrSlice (line 2189) | func (v *Value) UintptrSlice(optionalDefault ...[]uintptr) []uintptr { method MustUintptrSlice (line 2202) | func (v *Value) MustUintptrSlice() []uintptr { method IsUintptr (line 2207) | func (v *Value) IsUintptr() bool { method IsUintptrSlice (line 2213) | func (v *Value) IsUintptrSlice() bool { method EachUintptr (line 2222) | func (v *Value) EachUintptr(callback func(int, uintptr) bool) *Value { method WhereUintptr (line 2238) | func (v *Value) WhereUintptr(decider func(int, uintptr) bool) *Value { method GroupUintptr (line 2257) | func (v *Value) GroupUintptr(grouper func(int, uintptr) string) *Value { method ReplaceUintptr (line 2277) | func (v *Value) ReplaceUintptr(replacer func(int, uintptr) uintptr) *Val... method CollectUintptr (line 2294) | func (v *Value) CollectUintptr(collector func(int, uintptr) interface{})... method Float32 (line 2314) | func (v *Value) Float32(optionalDefault ...float32) float32 { method MustFloat32 (line 2327) | func (v *Value) MustFloat32() float32 { method Float32Slice (line 2333) | func (v *Value) Float32Slice(optionalDefault ...[]float32) []float32 { method MustFloat32Slice (line 2346) | func (v *Value) MustFloat32Slice() []float32 { method IsFloat32 (line 2351) | func (v *Value) IsFloat32() bool { method IsFloat32Slice (line 2357) | func (v *Value) IsFloat32Slice() bool { method EachFloat32 (line 2366) | func (v *Value) EachFloat32(callback func(int, float32) bool) *Value { method WhereFloat32 (line 2382) | func (v *Value) WhereFloat32(decider func(int, float32) bool) *Value { method GroupFloat32 (line 2401) | func (v *Value) GroupFloat32(grouper func(int, float32) string) *Value { method ReplaceFloat32 (line 2421) | func (v *Value) ReplaceFloat32(replacer func(int, float32) float32) *Val... method CollectFloat32 (line 2438) | func (v *Value) CollectFloat32(collector func(int, float32) interface{})... method Float64 (line 2458) | func (v *Value) Float64(optionalDefault ...float64) float64 { method MustFloat64 (line 2471) | func (v *Value) MustFloat64() float64 { method Float64Slice (line 2477) | func (v *Value) Float64Slice(optionalDefault ...[]float64) []float64 { method MustFloat64Slice (line 2490) | func (v *Value) MustFloat64Slice() []float64 { method IsFloat64 (line 2495) | func (v *Value) IsFloat64() bool { method IsFloat64Slice (line 2501) | func (v *Value) IsFloat64Slice() bool { method EachFloat64 (line 2510) | func (v *Value) EachFloat64(callback func(int, float64) bool) *Value { method WhereFloat64 (line 2526) | func (v *Value) WhereFloat64(decider func(int, float64) bool) *Value { method GroupFloat64 (line 2545) | func (v *Value) GroupFloat64(grouper func(int, float64) string) *Value { method ReplaceFloat64 (line 2565) | func (v *Value) ReplaceFloat64(replacer func(int, float64) float64) *Val... method CollectFloat64 (line 2582) | func (v *Value) CollectFloat64(collector func(int, float64) interface{})... method Complex64 (line 2602) | func (v *Value) Complex64(optionalDefault ...complex64) complex64 { method MustComplex64 (line 2615) | func (v *Value) MustComplex64() complex64 { method Complex64Slice (line 2621) | func (v *Value) Complex64Slice(optionalDefault ...[]complex64) []complex... method MustComplex64Slice (line 2634) | func (v *Value) MustComplex64Slice() []complex64 { method IsComplex64 (line 2639) | func (v *Value) IsComplex64() bool { method IsComplex64Slice (line 2645) | func (v *Value) IsComplex64Slice() bool { method EachComplex64 (line 2654) | func (v *Value) EachComplex64(callback func(int, complex64) bool) *Value { method WhereComplex64 (line 2670) | func (v *Value) WhereComplex64(decider func(int, complex64) bool) *Value { method GroupComplex64 (line 2689) | func (v *Value) GroupComplex64(grouper func(int, complex64) string) *Val... method ReplaceComplex64 (line 2709) | func (v *Value) ReplaceComplex64(replacer func(int, complex64) complex64... method CollectComplex64 (line 2726) | func (v *Value) CollectComplex64(collector func(int, complex64) interfac... method Complex128 (line 2746) | func (v *Value) Complex128(optionalDefault ...complex128) complex128 { method MustComplex128 (line 2759) | func (v *Value) MustComplex128() complex128 { method Complex128Slice (line 2765) | func (v *Value) Complex128Slice(optionalDefault ...[]complex128) []compl... method MustComplex128Slice (line 2778) | func (v *Value) MustComplex128Slice() []complex128 { method IsComplex128 (line 2783) | func (v *Value) IsComplex128() bool { method IsComplex128Slice (line 2789) | func (v *Value) IsComplex128Slice() bool { method EachComplex128 (line 2798) | func (v *Value) EachComplex128(callback func(int, complex128) bool) *Val... method WhereComplex128 (line 2814) | func (v *Value) WhereComplex128(decider func(int, complex128) bool) *Val... method GroupComplex128 (line 2833) | func (v *Value) GroupComplex128(grouper func(int, complex128) string) *V... method ReplaceComplex128 (line 2853) | func (v *Value) ReplaceComplex128(replacer func(int, complex128) complex... method CollectComplex128 (line 2870) | func (v *Value) CollectComplex128(collector func(int, complex128) interf... FILE: vendor/github.com/stretchr/objx/value.go type Value (line 5) | type Value struct method Data (line 11) | func (v *Value) Data() interface{} { FILE: vendor/github.com/stretchr/testify/assert/assertion_format.go function Conditionf (line 15) | func Conditionf(t TestingT, comp Comparison, msg string, args ...interfa... function Containsf (line 27) | func Containsf(t TestingT, s interface{}, contains interface{}, msg stri... function Emptyf (line 37) | func Emptyf(t TestingT, object interface{}, msg string, args ...interfac... function Equalf (line 50) | func Equalf(t TestingT, expected interface{}, actual interface{}, msg st... function EqualErrorf (line 61) | func EqualErrorf(t TestingT, theError error, errString string, msg strin... function EqualValuesf (line 71) | func EqualValuesf(t TestingT, expected interface{}, actual interface{}, ... function Errorf (line 83) | func Errorf(t TestingT, err error, msg string, args ...interface{}) bool { function Exactlyf (line 92) | func Exactlyf(t TestingT, expected interface{}, actual interface{}, msg ... function Failf (line 97) | func Failf(t TestingT, failureMessage string, msg string, args ...interf... function FailNowf (line 102) | func FailNowf(t TestingT, failureMessage string, msg string, args ...int... function Falsef (line 111) | func Falsef(t TestingT, value bool, msg string, args ...interface{}) bool { function HTTPBodyContainsf (line 121) | func HTTPBodyContainsf(t TestingT, handler http.HandlerFunc, method stri... function HTTPBodyNotContainsf (line 131) | func HTTPBodyNotContainsf(t TestingT, handler http.HandlerFunc, method s... function HTTPErrorf (line 140) | func HTTPErrorf(t TestingT, handler http.HandlerFunc, method string, url... function HTTPRedirectf (line 149) | func HTTPRedirectf(t TestingT, handler http.HandlerFunc, method string, ... function HTTPSuccessf (line 158) | func HTTPSuccessf(t TestingT, handler http.HandlerFunc, method string, u... function Implementsf (line 165) | func Implementsf(t TestingT, interfaceObject interface{}, object interfa... function InDeltaf (line 174) | func InDeltaf(t TestingT, expected interface{}, actual interface{}, delt... function InDeltaSlicef (line 179) | func InDeltaSlicef(t TestingT, expected interface{}, actual interface{},... function InEpsilonf (line 186) | func InEpsilonf(t TestingT, expected interface{}, actual interface{}, ep... function InEpsilonSlicef (line 191) | func InEpsilonSlicef(t TestingT, expected interface{}, actual interface{... function IsTypef (line 196) | func IsTypef(t TestingT, expectedType interface{}, object interface{}, m... function JSONEqf (line 205) | func JSONEqf(t TestingT, expected string, actual string, msg string, arg... function Lenf (line 215) | func Lenf(t TestingT, object interface{}, length int, msg string, args .... function Nilf (line 224) | func Nilf(t TestingT, object interface{}, msg string, args ...interface{... function NoErrorf (line 236) | func NoErrorf(t TestingT, err error, msg string, args ...interface{}) bo... function NotContainsf (line 248) | func NotContainsf(t TestingT, s interface{}, contains interface{}, msg s... function NotEmptyf (line 260) | func NotEmptyf(t TestingT, object interface{}, msg string, args ...inter... function NotEqualf (line 272) | func NotEqualf(t TestingT, expected interface{}, actual interface{}, msg... function NotNilf (line 281) | func NotNilf(t TestingT, object interface{}, msg string, args ...interfa... function NotPanicsf (line 290) | func NotPanicsf(t TestingT, f PanicTestFunc, msg string, args ...interfa... function NotRegexpf (line 300) | func NotRegexpf(t TestingT, rx interface{}, str interface{}, msg string,... function NotSubsetf (line 310) | func NotSubsetf(t TestingT, list interface{}, subset interface{}, msg st... function NotZerof (line 315) | func NotZerof(t TestingT, i interface{}, msg string, args ...interface{}... function Panicsf (line 324) | func Panicsf(t TestingT, f PanicTestFunc, msg string, args ...interface{... function PanicsWithValuef (line 334) | func PanicsWithValuef(t TestingT, expected interface{}, f PanicTestFunc,... function Regexpf (line 344) | func Regexpf(t TestingT, rx interface{}, str interface{}, msg string, ar... function Subsetf (line 354) | func Subsetf(t TestingT, list interface{}, subset interface{}, msg strin... function Truef (line 363) | func Truef(t TestingT, value bool, msg string, args ...interface{}) bool { function WithinDurationf (line 372) | func WithinDurationf(t TestingT, expected time.Time, actual time.Time, d... function Zerof (line 377) | func Zerof(t TestingT, i interface{}, msg string, args ...interface{}) b... FILE: vendor/github.com/stretchr/testify/assert/assertion_forward.go method Condition (line 15) | func (a *Assertions) Condition(comp Comparison, msgAndArgs ...interface{... method Conditionf (line 20) | func (a *Assertions) Conditionf(comp Comparison, msg string, args ...int... method Contains (line 32) | func (a *Assertions) Contains(s interface{}, contains interface{}, msgAn... method Containsf (line 44) | func (a *Assertions) Containsf(s interface{}, contains interface{}, msg ... method Empty (line 54) | func (a *Assertions) Empty(object interface{}, msgAndArgs ...interface{}... method Emptyf (line 64) | func (a *Assertions) Emptyf(object interface{}, msg string, args ...inte... method Equal (line 77) | func (a *Assertions) Equal(expected interface{}, actual interface{}, msg... method EqualError (line 88) | func (a *Assertions) EqualError(theError error, errString string, msgAnd... method EqualErrorf (line 99) | func (a *Assertions) EqualErrorf(theError error, errString string, msg s... method EqualValues (line 109) | func (a *Assertions) EqualValues(expected interface{}, actual interface{... method EqualValuesf (line 119) | func (a *Assertions) EqualValuesf(expected interface{}, actual interface... method Equalf (line 132) | func (a *Assertions) Equalf(expected interface{}, actual interface{}, ms... method Error (line 144) | func (a *Assertions) Error(err error, msgAndArgs ...interface{}) bool { method Errorf (line 156) | func (a *Assertions) Errorf(err error, msg string, args ...interface{}) ... method Exactly (line 165) | func (a *Assertions) Exactly(expected interface{}, actual interface{}, m... method Exactlyf (line 174) | func (a *Assertions) Exactlyf(expected interface{}, actual interface{}, ... method Fail (line 179) | func (a *Assertions) Fail(failureMessage string, msgAndArgs ...interface... method FailNow (line 184) | func (a *Assertions) FailNow(failureMessage string, msgAndArgs ...interf... method FailNowf (line 189) | func (a *Assertions) FailNowf(failureMessage string, msg string, args ..... method Failf (line 194) | func (a *Assertions) Failf(failureMessage string, msg string, args ...in... method False (line 203) | func (a *Assertions) False(value bool, msgAndArgs ...interface{}) bool { method Falsef (line 212) | func (a *Assertions) Falsef(value bool, msg string, args ...interface{})... method HTTPBodyContains (line 222) | func (a *Assertions) HTTPBodyContains(handler http.HandlerFunc, method s... method HTTPBodyContainsf (line 232) | func (a *Assertions) HTTPBodyContainsf(handler http.HandlerFunc, method ... method HTTPBodyNotContains (line 242) | func (a *Assertions) HTTPBodyNotContains(handler http.HandlerFunc, metho... method HTTPBodyNotContainsf (line 252) | func (a *Assertions) HTTPBodyNotContainsf(handler http.HandlerFunc, meth... method HTTPError (line 261) | func (a *Assertions) HTTPError(handler http.HandlerFunc, method string, ... method HTTPErrorf (line 270) | func (a *Assertions) HTTPErrorf(handler http.HandlerFunc, method string,... method HTTPRedirect (line 279) | func (a *Assertions) HTTPRedirect(handler http.HandlerFunc, method strin... method HTTPRedirectf (line 288) | func (a *Assertions) HTTPRedirectf(handler http.HandlerFunc, method stri... method HTTPSuccess (line 297) | func (a *Assertions) HTTPSuccess(handler http.HandlerFunc, method string... method HTTPSuccessf (line 306) | func (a *Assertions) HTTPSuccessf(handler http.HandlerFunc, method strin... method Implements (line 313) | func (a *Assertions) Implements(interfaceObject interface{}, object inte... method Implementsf (line 320) | func (a *Assertions) Implementsf(interfaceObject interface{}, object int... method InDelta (line 329) | func (a *Assertions) InDelta(expected interface{}, actual interface{}, d... method InDeltaSlice (line 334) | func (a *Assertions) InDeltaSlice(expected interface{}, actual interface... method InDeltaSlicef (line 339) | func (a *Assertions) InDeltaSlicef(expected interface{}, actual interfac... method InDeltaf (line 348) | func (a *Assertions) InDeltaf(expected interface{}, actual interface{}, ... method InEpsilon (line 355) | func (a *Assertions) InEpsilon(expected interface{}, actual interface{},... method InEpsilonSlice (line 360) | func (a *Assertions) InEpsilonSlice(expected interface{}, actual interfa... method InEpsilonSlicef (line 365) | func (a *Assertions) InEpsilonSlicef(expected interface{}, actual interf... method InEpsilonf (line 372) | func (a *Assertions) InEpsilonf(expected interface{}, actual interface{}... method IsType (line 377) | func (a *Assertions) IsType(expectedType interface{}, object interface{}... method IsTypef (line 382) | func (a *Assertions) IsTypef(expectedType interface{}, object interface{... method JSONEq (line 391) | func (a *Assertions) JSONEq(expected string, actual string, msgAndArgs .... method JSONEqf (line 400) | func (a *Assertions) JSONEqf(expected string, actual string, msg string,... method Len (line 410) | func (a *Assertions) Len(object interface{}, length int, msgAndArgs ...i... method Lenf (line 420) | func (a *Assertions) Lenf(object interface{}, length int, msg string, ar... method Nil (line 429) | func (a *Assertions) Nil(object interface{}, msgAndArgs ...interface{}) ... method Nilf (line 438) | func (a *Assertions) Nilf(object interface{}, msg string, args ...interf... method NoError (line 450) | func (a *Assertions) NoError(err error, msgAndArgs ...interface{}) bool { method NoErrorf (line 462) | func (a *Assertions) NoErrorf(err error, msg string, args ...interface{}... method NotContains (line 474) | func (a *Assertions) NotContains(s interface{}, contains interface{}, ms... method NotContainsf (line 486) | func (a *Assertions) NotContainsf(s interface{}, contains interface{}, m... method NotEmpty (line 498) | func (a *Assertions) NotEmpty(object interface{}, msgAndArgs ...interfac... method NotEmptyf (line 510) | func (a *Assertions) NotEmptyf(object interface{}, msg string, args ...i... method NotEqual (line 522) | func (a *Assertions) NotEqual(expected interface{}, actual interface{}, ... method NotEqualf (line 534) | func (a *Assertions) NotEqualf(expected interface{}, actual interface{},... method NotNil (line 543) | func (a *Assertions) NotNil(object interface{}, msgAndArgs ...interface{... method NotNilf (line 552) | func (a *Assertions) NotNilf(object interface{}, msg string, args ...int... method NotPanics (line 561) | func (a *Assertions) NotPanics(f PanicTestFunc, msgAndArgs ...interface{... method NotPanicsf (line 570) | func (a *Assertions) NotPanicsf(f PanicTestFunc, msg string, args ...int... method NotRegexp (line 580) | func (a *Assertions) NotRegexp(rx interface{}, str interface{}, msgAndAr... method NotRegexpf (line 590) | func (a *Assertions) NotRegexpf(rx interface{}, str interface{}, msg str... method NotSubset (line 600) | func (a *Assertions) NotSubset(list interface{}, subset interface{}, msg... method NotSubsetf (line 610) | func (a *Assertions) NotSubsetf(list interface{}, subset interface{}, ms... method NotZero (line 615) | func (a *Assertions) NotZero(i interface{}, msgAndArgs ...interface{}) b... method NotZerof (line 620) | func (a *Assertions) NotZerof(i interface{}, msg string, args ...interfa... method Panics (line 629) | func (a *Assertions) Panics(f PanicTestFunc, msgAndArgs ...interface{}) ... method PanicsWithValue (line 639) | func (a *Assertions) PanicsWithValue(expected interface{}, f PanicTestFu... method PanicsWithValuef (line 649) | func (a *Assertions) PanicsWithValuef(expected interface{}, f PanicTestF... method Panicsf (line 658) | func (a *Assertions) Panicsf(f PanicTestFunc, msg string, args ...interf... method Regexp (line 668) | func (a *Assertions) Regexp(rx interface{}, str interface{}, msgAndArgs ... method Regexpf (line 678) | func (a *Assertions) Regexpf(rx interface{}, str interface{}, msg string... method Subset (line 688) | func (a *Assertions) Subset(list interface{}, subset interface{}, msgAnd... method Subsetf (line 698) | func (a *Assertions) Subsetf(list interface{}, subset interface{}, msg s... method True (line 707) | func (a *Assertions) True(value bool, msgAndArgs ...interface{}) bool { method Truef (line 716) | func (a *Assertions) Truef(value bool, msg string, args ...interface{}) ... method WithinDuration (line 725) | func (a *Assertions) WithinDuration(expected time.Time, actual time.Time... method WithinDurationf (line 734) | func (a *Assertions) WithinDurationf(expected time.Time, actual time.Tim... method Zero (line 739) | func (a *Assertions) Zero(i interface{}, msgAndArgs ...interface{}) bool { method Zerof (line 744) | func (a *Assertions) Zerof(i interface{}, msg string, args ...interface{... FILE: vendor/github.com/stretchr/testify/assert/assertions.go type TestingT (line 25) | type TestingT interface type Comparison (line 30) | type Comparison function ObjectsAreEqual (line 39) | func ObjectsAreEqual(expected, actual interface{}) bool { function ObjectsAreEqualValues (line 59) | func ObjectsAreEqualValues(expected, actual interface{}) bool { function CallerInfo (line 84) | func CallerInfo() []string { function isTest (line 147) | func isTest(name, prefix string) bool { function getWhitespaceString (line 160) | func getWhitespaceString() string { function messageFromMsgAndArgs (line 173) | func messageFromMsgAndArgs(msgAndArgs ...interface{}) string { function indentMessageLines (line 190) | func indentMessageLines(message string, longestLabelLen int) string { type failNower (line 205) | type failNower interface function FailNow (line 210) | func FailNow(t TestingT, failureMessage string, msgAndArgs ...interface{... function Fail (line 228) | func Fail(t TestingT, failureMessage string, msgAndArgs ...interface{}) ... type labeledContent (line 244) | type labeledContent struct function labeledOutput (line 258) | func labeledOutput(content ...labeledContent) string { function Implements (line 275) | func Implements(t TestingT, interfaceObject interface{}, object interfac... function IsType (line 288) | func IsType(t TestingT, expectedType interface{}, object interface{}, ms... function Equal (line 306) | func Equal(t TestingT, expected, actual interface{}, msgAndArgs ...inter... function formatUnequalValues (line 330) | func formatUnequalValues(expected, actual interface{}) (e string, a stri... function EqualValues (line 346) | func EqualValues(t TestingT, expected, actual interface{}, msgAndArgs ..... function Exactly (line 365) | func Exactly(t TestingT, expected, actual interface{}, msgAndArgs ...int... function NotNil (line 383) | func NotNil(t TestingT, object interface{}, msgAndArgs ...interface{}) b... function isNil (line 391) | func isNil(object interface{}) bool { function Nil (line 410) | func Nil(t TestingT, object interface{}, msgAndArgs ...interface{}) bool { function isEmpty (line 433) | func isEmpty(object interface{}) bool { function Empty (line 483) | func Empty(t TestingT, object interface{}, msgAndArgs ...interface{}) bo... function NotEmpty (line 502) | func NotEmpty(t TestingT, object interface{}, msgAndArgs ...interface{})... function getLen (line 515) | func getLen(x interface{}) (ok bool, length int) { function Len (line 531) | func Len(t TestingT, object interface{}, length int, msgAndArgs ...inter... function True (line 548) | func True(t TestingT, value bool, msgAndArgs ...interface{}) bool { function False (line 563) | func False(t TestingT, value bool, msgAndArgs ...interface{}) bool { function NotEqual (line 581) | func NotEqual(t TestingT, expected, actual interface{}, msgAndArgs ...in... function includeElement (line 599) | func includeElement(list interface{}, element interface{}) (ok, found bo... function Contains (line 641) | func Contains(t TestingT, s, contains interface{}, msgAndArgs ...interfa... function NotContains (line 663) | func NotContains(t TestingT, s, contains interface{}, msgAndArgs ...inte... function Subset (line 683) | func Subset(t TestingT, list, subset interface{}, msgAndArgs ...interfac... function NotSubset (line 726) | func NotSubset(t TestingT, list, subset interface{}, msgAndArgs ...inter... function Condition (line 764) | func Condition(t TestingT, comp Comparison, msgAndArgs ...interface{}) b... type PanicTestFunc (line 774) | type PanicTestFunc function didPanic (line 777) | func didPanic(f PanicTestFunc) (bool, interface{}) { function Panics (line 803) | func Panics(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool { function PanicsWithValue (line 818) | func PanicsWithValue(t TestingT, expected interface{}, f PanicTestFunc, ... function NotPanics (line 836) | func NotPanics(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) b... function WithinDuration (line 850) | func WithinDuration(t TestingT, expected, actual time.Time, delta time.D... function toFloat (line 860) | func toFloat(x interface{}) (float64, bool) { function InDelta (line 901) | func InDelta(t TestingT, expected, actual interface{}, delta float64, ms... function InDeltaSlice (line 927) | func InDeltaSlice(t TestingT, expected, actual interface{}, delta float6... function calcRelativeError (line 947) | func calcRelativeError(expected, actual interface{}) (float64, error) { function InEpsilon (line 966) | func InEpsilon(t TestingT, expected, actual interface{}, epsilon float64... function InEpsilonSlice (line 980) | func InEpsilonSlice(t TestingT, expected, actual interface{}, epsilon fl... function NoError (line 1012) | func NoError(t TestingT, err error, msgAndArgs ...interface{}) bool { function Error (line 1028) | func Error(t TestingT, err error, msgAndArgs ...interface{}) bool { function EqualError (line 1044) | func EqualError(t TestingT, theError error, errString string, msgAndArgs... function matchRegexp (line 1060) | func matchRegexp(rx interface{}, str interface{}) bool { function Regexp (line 1079) | func Regexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...i... function NotRegexp (line 1096) | func NotRegexp(t TestingT, rx interface{}, str interface{}, msgAndArgs .... function Zero (line 1108) | func Zero(t TestingT, i interface{}, msgAndArgs ...interface{}) bool { function NotZero (line 1116) | func NotZero(t TestingT, i interface{}, msgAndArgs ...interface{}) bool { function JSONEq (line 1128) | func JSONEq(t TestingT, expected string, actual string, msgAndArgs ...in... function typeAndKind (line 1142) | func typeAndKind(v interface{}) (reflect.Type, reflect.Kind) { function diff (line 1155) | func diff(expected interface{}, actual interface{}) string { function validateEqualArgs (line 1189) | func validateEqualArgs(expected, actual interface{}) error { function isFunction (line 1196) | func isFunction(arg interface{}) bool { FILE: vendor/github.com/stretchr/testify/assert/forward_assertions.go type Assertions (line 5) | type Assertions struct function New (line 10) | func New(t TestingT) *Assertions { FILE: vendor/github.com/stretchr/testify/assert/http_assertions.go function httpCode (line 13) | func httpCode(handler http.HandlerFunc, method, url string, values url.V... function HTTPSuccess (line 28) | func HTTPSuccess(t TestingT, handler http.HandlerFunc, method, url strin... function HTTPRedirect (line 48) | func HTTPRedirect(t TestingT, handler http.HandlerFunc, method, url stri... function HTTPError (line 68) | func HTTPError(t TestingT, handler http.HandlerFunc, method, url string,... function HTTPBody (line 85) | func HTTPBody(handler http.HandlerFunc, method, url string, values url.V... function HTTPBodyContains (line 101) | func HTTPBodyContains(t TestingT, handler http.HandlerFunc, method, url ... function HTTPBodyNotContains (line 118) | func HTTPBodyNotContains(t TestingT, handler http.HandlerFunc, method, u... FILE: vendor/github.com/stretchr/testify/mock/mock.go type TestingT (line 19) | type TestingT interface type Call (line 31) | type Call struct method lock (line 73) | func (c *Call) lock() { method unlock (line 77) | func (c *Call) unlock() { method Return (line 84) | func (c *Call) Return(returnArguments ...interface{}) *Call { method Once (line 96) | func (c *Call) Once() *Call { method Twice (line 103) | func (c *Call) Twice() *Call { method Times (line 111) | func (c *Call) Times(i int) *Call { method WaitUntil (line 122) | func (c *Call) WaitUntil(w <-chan time.Time) *Call { method After (line 132) | func (c *Call) After(d time.Duration) *Call { method Run (line 144) | func (c *Call) Run(fn func(args Arguments)) *Call { method On (line 157) | func (c *Call) On(methodName string, arguments ...interface{}) *Call { function newCall (line 61) | func newCall(parent *Mock, methodName string, methodArguments ...interfa... type Mock (line 164) | type Mock struct method TestData (line 181) | func (m *Mock) TestData() objx.Map { method On (line 198) | func (m *Mock) On(methodName string, arguments ...interface{}) *Call { method findExpectedCall (line 216) | func (m *Mock) findExpectedCall(method string, arguments ...interface{... method findClosestCall (line 230) | func (m *Mock) findClosestCall(method string, arguments ...interface{}... method Called (line 271) | func (m *Mock) Called(arguments ...interface{}) Arguments { method MethodCalled (line 295) | func (m *Mock) MethodCalled(methodName string, arguments ...interface{... method AssertExpectations (line 382) | func (m *Mock) AssertExpectations(t TestingT) bool { method AssertNumberOfCalls (line 413) | func (m *Mock) AssertNumberOfCalls(t TestingT, methodName string, expe... method AssertCalled (line 427) | func (m *Mock) AssertCalled(t TestingT, methodName string, arguments .... method AssertNotCalled (line 439) | func (m *Mock) AssertNotCalled(t TestingT, methodName string, argument... method methodWasCalled (line 449) | func (m *Mock) methodWasCalled(methodName string, expected []interface... method expectedCalls (line 466) | func (m *Mock) expectedCalls() []*Call { method calls (line 470) | func (m *Mock) calls() []Call { function callString (line 253) | func callString(method string, arguments Arguments, includeArgumentValue... type assertExpectationser (line 358) | type assertExpectationser interface function AssertExpectationsForObjects (line 366) | func AssertExpectationsForObjects(t TestingT, testObjects ...interface{}... type Arguments (line 479) | type Arguments method Get (line 549) | func (args Arguments) Get(index int) interface{} { method Is (line 557) | func (args Arguments) Is(objects ...interface{}) bool { method Diff (line 570) | func (args Arguments) Diff(objects []interface{}) (string, int) { method Assert (line 637) | func (args Arguments) Assert(t TestingT, objects ...interface{}) bool { method String (line 659) | func (args Arguments) String(indexOrNil ...int) string { method Int (line 685) | func (args Arguments) Int(index int) int { method Error (line 696) | func (args Arguments) Error(index int) error { method Bool (line 711) | func (args Arguments) Bool(index int) bool { constant Anything (line 484) | Anything string = "mock.Anything" type AnythingOfTypeArgument (line 489) | type AnythingOfTypeArgument function AnythingOfType (line 496) | func AnythingOfType(t string) AnythingOfTypeArgument { type argumentMatcher (line 502) | type argumentMatcher struct method Matches (line 507) | func (f argumentMatcher) Matches(argument interface{}) bool { method String (line 517) | func (f argumentMatcher) String() string { function MatchedBy (line 532) | func MatchedBy(fn interface{}) argumentMatcher { function typeAndKind (line 720) | func typeAndKind(v interface{}) (reflect.Type, reflect.Kind) { function diffArguments (line 731) | func diffArguments(expected Arguments, actual Arguments) string { function diff (line 747) | func diff(expected interface{}, actual interface{}) string { FILE: vendor/github.com/stretchr/testify/require/forward_requirements.go type Assertions (line 5) | type Assertions struct function New (line 10) | func New(t TestingT) *Assertions { FILE: vendor/github.com/stretchr/testify/require/require.go function Condition (line 16) | func Condition(t TestingT, comp assert.Comparison, msgAndArgs ...interfa... function Conditionf (line 23) | func Conditionf(t TestingT, comp assert.Comparison, msg string, args ...... function Contains (line 37) | func Contains(t TestingT, s interface{}, contains interface{}, msgAndArg... function Containsf (line 51) | func Containsf(t TestingT, s interface{}, contains interface{}, msg stri... function Empty (line 63) | func Empty(t TestingT, object interface{}, msgAndArgs ...interface{}) { function Emptyf (line 75) | func Emptyf(t TestingT, object interface{}, msg string, args ...interfac... function Equal (line 90) | func Equal(t TestingT, expected interface{}, actual interface{}, msgAndA... function EqualError (line 103) | func EqualError(t TestingT, theError error, errString string, msgAndArgs... function EqualErrorf (line 116) | func EqualErrorf(t TestingT, theError error, errString string, msg strin... function EqualValues (line 128) | func EqualValues(t TestingT, expected interface{}, actual interface{}, m... function EqualValuesf (line 140) | func EqualValuesf(t TestingT, expected interface{}, actual interface{}, ... function Equalf (line 155) | func Equalf(t TestingT, expected interface{}, actual interface{}, msg st... function Error (line 169) | func Error(t TestingT, err error, msgAndArgs ...interface{}) { function Errorf (line 183) | func Errorf(t TestingT, err error, msg string, args ...interface{}) { function Exactly (line 194) | func Exactly(t TestingT, expected interface{}, actual interface{}, msgAn... function Exactlyf (line 205) | func Exactlyf(t TestingT, expected interface{}, actual interface{}, msg ... function Fail (line 212) | func Fail(t TestingT, failureMessage string, msgAndArgs ...interface{}) { function FailNow (line 219) | func FailNow(t TestingT, failureMessage string, msgAndArgs ...interface{... function FailNowf (line 226) | func FailNowf(t TestingT, failureMessage string, msg string, args ...int... function Failf (line 233) | func Failf(t TestingT, failureMessage string, msg string, args ...interf... function False (line 244) | func False(t TestingT, value bool, msgAndArgs ...interface{}) { function Falsef (line 255) | func Falsef(t TestingT, value bool, msg string, args ...interface{}) { function HTTPBodyContains (line 267) | func HTTPBodyContains(t TestingT, handler http.HandlerFunc, method strin... function HTTPBodyContainsf (line 279) | func HTTPBodyContainsf(t TestingT, handler http.HandlerFunc, method stri... function HTTPBodyNotContains (line 291) | func HTTPBodyNotContains(t TestingT, handler http.HandlerFunc, method st... function HTTPBodyNotContainsf (line 303) | func HTTPBodyNotContainsf(t TestingT, handler http.HandlerFunc, method s... function HTTPError (line 314) | func HTTPError(t TestingT, handler http.HandlerFunc, method string, url ... function HTTPErrorf (line 325) | func HTTPErrorf(t TestingT, handler http.HandlerFunc, method string, url... function HTTPRedirect (line 336) | func HTTPRedirect(t TestingT, handler http.HandlerFunc, method string, u... function HTTPRedirectf (line 347) | func HTTPRedirectf(t TestingT, handler http.HandlerFunc, method string, ... function HTTPSuccess (line 358) | func HTTPSuccess(t TestingT, handler http.HandlerFunc, method string, ur... function HTTPSuccessf (line 369) | func HTTPSuccessf(t TestingT, handler http.HandlerFunc, method string, u... function Implements (line 378) | func Implements(t TestingT, interfaceObject interface{}, object interfac... function Implementsf (line 387) | func Implementsf(t TestingT, interfaceObject interface{}, object interfa... function InDelta (line 398) | func InDelta(t TestingT, expected interface{}, actual interface{}, delta... function InDeltaSlice (line 405) | func InDeltaSlice(t TestingT, expected interface{}, actual interface{}, ... function InDeltaSlicef (line 412) | func InDeltaSlicef(t TestingT, expected interface{}, actual interface{},... function InDeltaf (line 423) | func InDeltaf(t TestingT, expected interface{}, actual interface{}, delt... function InEpsilon (line 432) | func InEpsilon(t TestingT, expected interface{}, actual interface{}, eps... function InEpsilonSlice (line 439) | func InEpsilonSlice(t TestingT, expected interface{}, actual interface{}... function InEpsilonSlicef (line 446) | func InEpsilonSlicef(t TestingT, expected interface{}, actual interface{... function InEpsilonf (line 455) | func InEpsilonf(t TestingT, expected interface{}, actual interface{}, ep... function IsType (line 462) | func IsType(t TestingT, expectedType interface{}, object interface{}, ms... function IsTypef (line 469) | func IsTypef(t TestingT, expectedType interface{}, object interface{}, m... function JSONEq (line 480) | func JSONEq(t TestingT, expected string, actual string, msgAndArgs ...in... function JSONEqf (line 491) | func JSONEqf(t TestingT, expected string, actual string, msg string, arg... function Len (line 503) | func Len(t TestingT, object interface{}, length int, msgAndArgs ...inter... function Lenf (line 515) | func Lenf(t TestingT, object interface{}, length int, msg string, args .... function Nil (line 526) | func Nil(t TestingT, object interface{}, msgAndArgs ...interface{}) { function Nilf (line 537) | func Nilf(t TestingT, object interface{}, msg string, args ...interface{... function NoError (line 551) | func NoError(t TestingT, err error, msgAndArgs ...interface{}) { function NoErrorf (line 565) | func NoErrorf(t TestingT, err error, msg string, args ...interface{}) { function NotContains (line 579) | func NotContains(t TestingT, s interface{}, contains interface{}, msgAnd... function NotContainsf (line 593) | func NotContainsf(t TestingT, s interface{}, contains interface{}, msg s... function NotEmpty (line 607) | func NotEmpty(t TestingT, object interface{}, msgAndArgs ...interface{}) { function NotEmptyf (line 621) | func NotEmptyf(t TestingT, object interface{}, msg string, args ...inter... function NotEqual (line 635) | func NotEqual(t TestingT, expected interface{}, actual interface{}, msgA... function NotEqualf (line 649) | func NotEqualf(t TestingT, expected interface{}, actual interface{}, msg... function NotNil (line 660) | func NotNil(t TestingT, object interface{}, msgAndArgs ...interface{}) { function NotNilf (line 671) | func NotNilf(t TestingT, object interface{}, msg string, args ...interfa... function NotPanics (line 682) | func NotPanics(t TestingT, f assert.PanicTestFunc, msgAndArgs ...interfa... function NotPanicsf (line 693) | func NotPanicsf(t TestingT, f assert.PanicTestFunc, msg string, args ...... function NotRegexp (line 705) | func NotRegexp(t TestingT, rx interface{}, str interface{}, msgAndArgs .... function NotRegexpf (line 717) | func NotRegexpf(t TestingT, rx interface{}, str interface{}, msg string,... function NotSubset (line 729) | func NotSubset(t TestingT, list interface{}, subset interface{}, msgAndA... function NotSubsetf (line 741) | func NotSubsetf(t TestingT, list interface{}, subset interface{}, msg st... function NotZero (line 748) | func NotZero(t TestingT, i interface{}, msgAndArgs ...interface{}) { function NotZerof (line 755) | func NotZerof(t TestingT, i interface{}, msg string, args ...interface{}) { function Panics (line 766) | func Panics(t TestingT, f assert.PanicTestFunc, msgAndArgs ...interface{... function PanicsWithValue (line 778) | func PanicsWithValue(t TestingT, expected interface{}, f assert.PanicTes... function PanicsWithValuef (line 790) | func PanicsWithValuef(t TestingT, expected interface{}, f assert.PanicTe... function Panicsf (line 801) | func Panicsf(t TestingT, f assert.PanicTestFunc, msg string, args ...int... function Regexp (line 813) | func Regexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...i... function Regexpf (line 825) | func Regexpf(t TestingT, rx interface{}, str interface{}, msg string, ar... function Subset (line 837) | func Subset(t TestingT, list interface{}, subset interface{}, msgAndArgs... function Subsetf (line 849) | func Subsetf(t TestingT, list interface{}, subset interface{}, msg strin... function True (line 860) | func True(t TestingT, value bool, msgAndArgs ...interface{}) { function Truef (line 871) | func Truef(t TestingT, value bool, msg string, args ...interface{}) { function WithinDuration (line 882) | func WithinDuration(t TestingT, expected time.Time, actual time.Time, de... function WithinDurationf (line 893) | func WithinDurationf(t TestingT, expected time.Time, actual time.Time, d... function Zero (line 900) | func Zero(t TestingT, i interface{}, msgAndArgs ...interface{}) { function Zerof (line 907) | func Zerof(t TestingT, i interface{}, msg string, args ...interface{}) { FILE: vendor/github.com/stretchr/testify/require/require_forward.go method Condition (line 16) | func (a *Assertions) Condition(comp assert.Comparison, msgAndArgs ...int... method Conditionf (line 21) | func (a *Assertions) Conditionf(comp assert.Comparison, msg string, args... method Contains (line 33) | func (a *Assertions) Contains(s interface{}, contains interface{}, msgAn... method Containsf (line 45) | func (a *Assertions) Containsf(s interface{}, contains interface{}, msg ... method Empty (line 55) | func (a *Assertions) Empty(object interface{}, msgAndArgs ...interface{}) { method Emptyf (line 65) | func (a *Assertions) Emptyf(object interface{}, msg string, args ...inte... method Equal (line 78) | func (a *Assertions) Equal(expected interface{}, actual interface{}, msg... method EqualError (line 89) | func (a *Assertions) EqualError(theError error, errString string, msgAnd... method EqualErrorf (line 100) | func (a *Assertions) EqualErrorf(theError error, errString string, msg s... method EqualValues (line 110) | func (a *Assertions) EqualValues(expected interface{}, actual interface{... method EqualValuesf (line 120) | func (a *Assertions) EqualValuesf(expected interface{}, actual interface... method Equalf (line 133) | func (a *Assertions) Equalf(expected interface{}, actual interface{}, ms... method Error (line 145) | func (a *Assertions) Error(err error, msgAndArgs ...interface{}) { method Errorf (line 157) | func (a *Assertions) Errorf(err error, msg string, args ...interface{}) { method Exactly (line 166) | func (a *Assertions) Exactly(expected interface{}, actual interface{}, m... method Exactlyf (line 175) | func (a *Assertions) Exactlyf(expected interface{}, actual interface{}, ... method Fail (line 180) | func (a *Assertions) Fail(failureMessage string, msgAndArgs ...interface... method FailNow (line 185) | func (a *Assertions) FailNow(failureMessage string, msgAndArgs ...interf... method FailNowf (line 190) | func (a *Assertions) FailNowf(failureMessage string, msg string, args ..... method Failf (line 195) | func (a *Assertions) Failf(failureMessage string, msg string, args ...in... method False (line 204) | func (a *Assertions) False(value bool, msgAndArgs ...interface{}) { method Falsef (line 213) | func (a *Assertions) Falsef(value bool, msg string, args ...interface{}) { method HTTPBodyContains (line 223) | func (a *Assertions) HTTPBodyContains(handler http.HandlerFunc, method s... method HTTPBodyContainsf (line 233) | func (a *Assertions) HTTPBodyContainsf(handler http.HandlerFunc, method ... method HTTPBodyNotContains (line 243) | func (a *Assertions) HTTPBodyNotContains(handler http.HandlerFunc, metho... method HTTPBodyNotContainsf (line 253) | func (a *Assertions) HTTPBodyNotContainsf(handler http.HandlerFunc, meth... method HTTPError (line 262) | func (a *Assertions) HTTPError(handler http.HandlerFunc, method string, ... method HTTPErrorf (line 271) | func (a *Assertions) HTTPErrorf(handler http.HandlerFunc, method string,... method HTTPRedirect (line 280) | func (a *Assertions) HTTPRedirect(handler http.HandlerFunc, method strin... method HTTPRedirectf (line 289) | func (a *Assertions) HTTPRedirectf(handler http.HandlerFunc, method stri... method HTTPSuccess (line 298) | func (a *Assertions) HTTPSuccess(handler http.HandlerFunc, method string... method HTTPSuccessf (line 307) | func (a *Assertions) HTTPSuccessf(handler http.HandlerFunc, method strin... method Implements (line 314) | func (a *Assertions) Implements(interfaceObject interface{}, object inte... method Implementsf (line 321) | func (a *Assertions) Implementsf(interfaceObject interface{}, object int... method InDelta (line 330) | func (a *Assertions) InDelta(expected interface{}, actual interface{}, d... method InDeltaSlice (line 335) | func (a *Assertions) InDeltaSlice(expected interface{}, actual interface... method InDeltaSlicef (line 340) | func (a *Assertions) InDeltaSlicef(expected interface{}, actual interfac... method InDeltaf (line 349) | func (a *Assertions) InDeltaf(expected interface{}, actual interface{}, ... method InEpsilon (line 356) | func (a *Assertions) InEpsilon(expected interface{}, actual interface{},... method InEpsilonSlice (line 361) | func (a *Assertions) InEpsilonSlice(expected interface{}, actual interfa... method InEpsilonSlicef (line 366) | func (a *Assertions) InEpsilonSlicef(expected interface{}, actual interf... method InEpsilonf (line 373) | func (a *Assertions) InEpsilonf(expected interface{}, actual interface{}... method IsType (line 378) | func (a *Assertions) IsType(expectedType interface{}, object interface{}... method IsTypef (line 383) | func (a *Assertions) IsTypef(expectedType interface{}, object interface{... method JSONEq (line 392) | func (a *Assertions) JSONEq(expected string, actual string, msgAndArgs .... method JSONEqf (line 401) | func (a *Assertions) JSONEqf(expected string, actual string, msg string,... method Len (line 411) | func (a *Assertions) Len(object interface{}, length int, msgAndArgs ...i... method Lenf (line 421) | func (a *Assertions) Lenf(object interface{}, length int, msg string, ar... method Nil (line 430) | func (a *Assertions) Nil(object interface{}, msgAndArgs ...interface{}) { method Nilf (line 439) | func (a *Assertions) Nilf(object interface{}, msg string, args ...interf... method NoError (line 451) | func (a *Assertions) NoError(err error, msgAndArgs ...interface{}) { method NoErrorf (line 463) | func (a *Assertions) NoErrorf(err error, msg string, args ...interface{}) { method NotContains (line 475) | func (a *Assertions) NotContains(s interface{}, contains interface{}, ms... method NotContainsf (line 487) | func (a *Assertions) NotContainsf(s interface{}, contains interface{}, m... method NotEmpty (line 499) | func (a *Assertions) NotEmpty(object interface{}, msgAndArgs ...interfac... method NotEmptyf (line 511) | func (a *Assertions) NotEmptyf(object interface{}, msg string, args ...i... method NotEqual (line 523) | func (a *Assertions) NotEqual(expected interface{}, actual interface{}, ... method NotEqualf (line 535) | func (a *Assertions) NotEqualf(expected interface{}, actual interface{},... method NotNil (line 544) | func (a *Assertions) NotNil(object interface{}, msgAndArgs ...interface{... method NotNilf (line 553) | func (a *Assertions) NotNilf(object interface{}, msg string, args ...int... method NotPanics (line 562) | func (a *Assertions) NotPanics(f assert.PanicTestFunc, msgAndArgs ...int... method NotPanicsf (line 571) | func (a *Assertions) NotPanicsf(f assert.PanicTestFunc, msg string, args... method NotRegexp (line 581) | func (a *Assertions) NotRegexp(rx interface{}, str interface{}, msgAndAr... method NotRegexpf (line 591) | func (a *Assertions) NotRegexpf(rx interface{}, str interface{}, msg str... method NotSubset (line 601) | func (a *Assertions) NotSubset(list interface{}, subset interface{}, msg... method NotSubsetf (line 611) | func (a *Assertions) NotSubsetf(list interface{}, subset interface{}, ms... method NotZero (line 616) | func (a *Assertions) NotZero(i interface{}, msgAndArgs ...interface{}) { method NotZerof (line 621) | func (a *Assertions) NotZerof(i interface{}, msg string, args ...interfa... method Panics (line 630) | func (a *Assertions) Panics(f assert.PanicTestFunc, msgAndArgs ...interf... method PanicsWithValue (line 640) | func (a *Assertions) PanicsWithValue(expected interface{}, f assert.Pani... method PanicsWithValuef (line 650) | func (a *Assertions) PanicsWithValuef(expected interface{}, f assert.Pan... method Panicsf (line 659) | func (a *Assertions) Panicsf(f assert.PanicTestFunc, msg string, args ..... method Regexp (line 669) | func (a *Assertions) Regexp(rx interface{}, str interface{}, msgAndArgs ... method Regexpf (line 679) | func (a *Assertions) Regexpf(rx interface{}, str interface{}, msg string... method Subset (line 689) | func (a *Assertions) Subset(list interface{}, subset interface{}, msgAnd... method Subsetf (line 699) | func (a *Assertions) Subsetf(list interface{}, subset interface{}, msg s... method True (line 708) | func (a *Assertions) True(value bool, msgAndArgs ...interface{}) { method Truef (line 717) | func (a *Assertions) Truef(value bool, msg string, args ...interface{}) { method WithinDuration (line 726) | func (a *Assertions) WithinDuration(expected time.Time, actual time.Time... method WithinDurationf (line 735) | func (a *Assertions) WithinDurationf(expected time.Time, actual time.Tim... method Zero (line 740) | func (a *Assertions) Zero(i interface{}, msgAndArgs ...interface{}) { method Zerof (line 745) | func (a *Assertions) Zerof(i interface{}, msg string, args ...interface{... FILE: vendor/github.com/stretchr/testify/require/requirements.go type TestingT (line 4) | type TestingT interface FILE: vendor/go.uber.org/dig/cycle.go type cycleEntry (line 30) | type cycleEntry struct type errCycleDetected (line 35) | type errCycleDetected struct method Error (line 39) | func (e errCycleDetected) Error() string { function IsCycleDetected (line 60) | func IsCycleDetected(err error) bool { function verifyAcyclic (line 65) | func verifyAcyclic(c containerStore, n provider, k key) error { function detectCycles (line 76) | func detectCycles(n provider, c containerStore, path []cycleEntry, visit... FILE: vendor/go.uber.org/dig/dig.go constant _optionalTag (line 40) | _optionalTag = "optional" constant _nameTag (line 41) | _nameTag = "name" constant _groupTag (line 42) | _groupTag = "group" type key (line 46) | type key struct type Option (line 56) | type Option interface type optionFunc (line 60) | type optionFunc method applyOption (line 62) | func (f optionFunc) applyOption(c *Container) { f(c) } type provideOptions (line 64) | type provideOptions struct method Validate (line 68) | func (o *provideOptions) Validate() error { type ProvideOption (line 80) | type ProvideOption interface type provideOptionFunc (line 84) | type provideOptionFunc method applyProvideOption (line 86) | func (f provideOptionFunc) applyProvideOption(opts *provideOptions) { ... function Name (line 105) | func Name(name string) ProvideOption { type InvokeOption (line 113) | type InvokeOption interface type Container (line 118) | type Container struct method createGraph (line 359) | func (c *Container) createGraph() *dot.Graph { method knownTypes (line 378) | func (c *Container) knownTypes() []reflect.Type { method getValue (line 392) | func (c *Container) getValue(name string, t reflect.Type) (v reflect.V... method setValue (line 397) | func (c *Container) setValue(name string, t reflect.Type, v reflect.Va... method getValueGroup (line 401) | func (c *Container) getValueGroup(name string, t reflect.Type) []refle... method submitGroupedValue (line 407) | func (c *Container) submitGroupedValue(name string, t reflect.Type, v ... method getValueProviders (line 412) | func (c *Container) getValueProviders(name string, t reflect.Type) []p... method getGroupProviders (line 416) | func (c *Container) getGroupProviders(name string, t reflect.Type) []p... method getProviders (line 420) | func (c *Container) getProviders(k key) []provider { method Provide (line 445) | func (c *Container) Provide(constructor interface{}, opts ...ProvideOp... method Invoke (line 479) | func (c *Container) Invoke(function interface{}, opts ...InvokeOption)... method verifyAcyclic (line 526) | func (c *Container) verifyAcyclic() error { method provide (line 538) | func (c *Container) provide(ctor interface{}, opts provideOptions) err... method findAndValidateResults (line 575) | func (c *Container) findAndValidateResults(n *node) (map[key]struct{},... type containerWriter (line 144) | type containerWriter interface type containerStore (line 156) | type containerStore interface type provider (line 182) | type provider interface function New (line 206) | func New(opts ...Option) *Container { function DeferAcyclicVerification (line 227) | func DeferAcyclicVerification() Option { type VisualizeOption (line 234) | type VisualizeOption interface type visualizeOptions (line 238) | type visualizeOptions struct type visualizeOptionFunc (line 242) | type visualizeOptionFunc method applyVisualizeOption (line 244) | func (f visualizeOptionFunc) applyVisualizeOption(opts *visualizeOptio... function VisualizeError (line 255) | func VisualizeError(err error) VisualizeOption { function updateGraph (line 261) | func updateGraph(dg *dot.Graph, err error) error { function Visualize (line 326) | func Visualize(c *Container, w io.Writer, opts ...VisualizeOption) error { function CanVisualizeError (line 344) | func CanVisualizeError(err error) bool { function setRand (line 372) | func setRand(r *rand.Rand) Option { type connectionVisitor (line 598) | type connectionVisitor struct method AnnotateWithField (line 630) | func (cv connectionVisitor) AnnotateWithField(f resultObjectField) res... method AnnotateWithPosition (line 635) | func (cv connectionVisitor) AnnotateWithPosition(i int) resultVisitor { method Visit (line 640) | func (cv connectionVisitor) Visit(res result) resultVisitor { type node (line 690) | type node struct method Location (line 740) | func (n *node) Location() *digreflect.Func { return n.location } method ParamList (line 741) | func (n *node) ParamList() paramList { return n.paramList } method ResultList (line 742) | func (n *node) ResultList() resultList { return n.resultList } method ID (line 743) | func (n *node) ID() dot.CtorID { return n.id } method Call (line 747) | func (n *node) Call(c containerStore) error { type nodeOptions (line 710) | type nodeOptions struct function newNode (line 715) | func newNode(ctor interface{}, opts nodeOptions) (*node, error) { function isFieldOptional (line 778) | func isFieldOptional(f reflect.StructField) (bool, error) { function shallowCheckDependencies (line 796) | func shallowCheckDependencies(c containerStore, p param) error { type stagingContainerWriter (line 821) | type stagingContainerWriter struct method setValue (line 835) | func (sr *stagingContainerWriter) setValue(name string, t reflect.Type... method submitGroupedValue (line 839) | func (sr *stagingContainerWriter) submitGroupedValue(group string, t r... method Commit (line 845) | func (sr *stagingContainerWriter) Commit(cw containerWriter) { function newStagingContainerWriter (line 828) | func newStagingContainerWriter() *stagingContainerWriter { type byTypeName (line 857) | type byTypeName method Len (line 859) | func (bs byTypeName) Len() int { method Less (line 863) | func (bs byTypeName) Less(i int, j int) bool { method Swap (line 867) | func (bs byTypeName) Swap(i int, j int) { function shuffledCopy (line 871) | func shuffledCopy(rand *rand.Rand, items []reflect.Value) []reflect.Value { function newDotCtor (line 879) | func newDotCtor(n *node) *dot.Ctor { FILE: vendor/go.uber.org/dig/error.go type causer (line 39) | type causer interface function RootCause (line 47) | func RootCause(err error) error { function errWrapf (line 64) | func errWrapf(err error, msg string, args ...interface{}) error { type wrappedError (line 76) | type wrappedError struct method cause (line 81) | func (e wrappedError) cause() error { return e.err } method Error (line 83) | func (e wrappedError) Error() string { type errProvide (line 89) | type errProvide struct method cause (line 94) | func (e errProvide) cause() error { return e.Reason } method Error (line 96) | func (e errProvide) Error() string { type errConstructorFailed (line 102) | type errConstructorFailed struct method cause (line 107) | func (e errConstructorFailed) cause() error { return e.Reason } method Error (line 109) | func (e errConstructorFailed) Error() string { type errArgumentsFailed (line 115) | type errArgumentsFailed struct method cause (line 120) | func (e errArgumentsFailed) cause() error { return e.Reason } method Error (line 122) | func (e errArgumentsFailed) Error() string { type errMissingDependencies (line 128) | type errMissingDependencies struct method cause (line 133) | func (e errMissingDependencies) cause() error { return e.Reason } method Error (line 135) | func (e errMissingDependencies) Error() string { type errParamSingleFailed (line 140) | type errParamSingleFailed struct method cause (line 146) | func (e errParamSingleFailed) cause() error { return e.Reason } method Error (line 148) | func (e errParamSingleFailed) Error() string { method updateGraph (line 152) | func (e errParamSingleFailed) updateGraph(g *dot.Graph) { type errParamGroupFailed (line 165) | type errParamGroupFailed struct method cause (line 171) | func (e errParamGroupFailed) cause() error { return e.Reason } method Error (line 173) | func (e errParamGroupFailed) Error() string { method updateGraph (line 177) | func (e errParamGroupFailed) updateGraph(g *dot.Graph) { type errMissingType (line 183) | type errMissingType struct method Error (line 235) | func (e errMissingType) Error() string { function newErrMissingType (line 191) | func newErrMissingType(c containerStore, k key) errMissingType { type errMissingManyTypes (line 269) | type errMissingManyTypes method Error (line 271) | func (e errMissingManyTypes) Error() string { method updateGraph (line 307) | func (e errMissingManyTypes) updateGraph(g *dot.Graph) { type errVisualizer (line 322) | type errVisualizer interface FILE: vendor/go.uber.org/dig/internal/digreflect/func.go type Func (line 32) | type Func struct method String (line 47) | func (f *Func) String() string { function InspectFunc (line 54) | func InspectFunc(function interface{}) *Func { constant _vendor (line 67) | _vendor = "/vendor/" function splitFuncName (line 69) | func splitFuncName(function string) (pname string, fname string) { FILE: vendor/go.uber.org/dig/internal/dot/graph.go type ErrorType (line 29) | type ErrorType method Color (line 302) | func (s ErrorType) Color() string { constant noError (line 32) | noError ErrorType = iota constant rootCause (line 33) | rootCause constant transitiveFailure (line 34) | transitiveFailure type CtorID (line 38) | type CtorID type Ctor (line 41) | type Ctor struct type Node (line 54) | type Node struct type Param (line 61) | type Param struct method String (line 256) | func (p *Param) String() string { type Result (line 68) | type Result struct method String (line 264) | func (r *Result) String() string { method Attributes (line 281) | func (r *Result) Attributes() string { type Group (line 79) | type Group struct method String (line 276) | func (g *Group) String() string { method Attributes (line 293) | func (g *Group) Attributes() string { type Graph (line 88) | type Graph struct method AddCtor (line 133) | func (dg *Graph) AddCtor(c *Ctor, paramList []*Param, resultList []*Re... method failNode (line 170) | func (dg *Graph) failNode(r *Result, isRootCause bool) { method AddMissingNodes (line 179) | func (dg *Graph) AddMissingNodes(results []*Result) { method FailNodes (line 190) | func (dg *Graph) FailNodes(results []*Result, id CtorID) { method FailGroupNodes (line 210) | func (dg *Graph) FailGroupNodes(name string, t reflect.Type, id CtorID) { method getGroup (line 236) | func (dg *Graph) getGroup(k groupKey) *Group { method addToGroup (line 247) | func (dg *Graph) addToGroup(r *Result, id CtorID) { method addRootCause (line 313) | func (dg *Graph) addRootCause(r *Result) { method addTransitiveFailure (line 317) | func (dg *Graph) addTransitiveFailure(r *Result) { type FailedNodes (line 99) | type FailedNodes struct type groupKey (line 110) | type groupKey struct function NewGraph (line 116) | func NewGraph() *Graph { function NewGroup (line 125) | func NewGroup(k groupKey) *Group { FILE: vendor/go.uber.org/dig/param.go type param (line 42) | type param interface function newParam (line 64) | func newParam(t reflect.Type) (param, error) { type paramVisitor (line 85) | type paramVisitor interface type paramVisitorFunc (line 99) | type paramVisitorFunc method Visit (line 101) | func (f paramVisitorFunc) Visit(p param) paramVisitor { function walkParam (line 116) | func walkParam(p param, v paramVisitor) { type paramList (line 146) | type paramList struct method DotParam (line 152) | func (pl paramList) DotParam() []*dot.Param { method Build (line 188) | func (pl paramList) Build(containerStore) (reflect.Value, error) { method BuildList (line 197) | func (pl paramList) BuildList(c containerStore) ([]reflect.Value, erro... function newParamList (line 164) | func newParamList(ctype reflect.Type) (paramList, error) { type paramSingle (line 213) | type paramSingle struct method DotParam (line 219) | func (ps paramSingle) DotParam() []*dot.Param { method Build (line 231) | func (ps paramSingle) Build(c containerStore) (reflect.Value, error) { type paramObject (line 272) | type paramObject struct method DotParam (line 277) | func (po paramObject) DotParam() []*dot.Param { method Build (line 308) | func (po paramObject) Build(c containerStore) (reflect.Value, error) { function newParamObject (line 287) | func newParamObject(t reflect.Type) (paramObject, error) { type paramObjectField (line 321) | type paramObjectField struct method DotParam (line 335) | func (pof paramObjectField) DotParam() []*dot.Param { method Build (line 383) | func (pof paramObjectField) Build(c containerStore) (reflect.Value, er... function newParamObjectField (line 339) | func newParamObjectField(idx int, f reflect.StructField) (paramObjectFie... type paramGroupedSlice (line 393) | type paramGroupedSlice struct method DotParam (line 401) | func (pt paramGroupedSlice) DotParam() []*dot.Param { method Build (line 436) | func (pt paramGroupedSlice) Build(c containerStore) (reflect.Value, er... function newParamGroupedSlice (line 416) | func newParamGroupedSlice(f reflect.StructField) (paramGroupedSlice, err... FILE: vendor/go.uber.org/dig/result.go type result (line 40) | type result interface type resultOptions (line 58) | type resultOptions struct function newResult (line 66) | func newResult(t reflect.Type, opts resultOptions) (result, error) { type resultVisitor (line 89) | type resultVisitor interface function walkResult (line 127) | func walkResult(r result, v resultVisitor) { type resultList (line 160) | type resultList struct method DotResult (line 171) | func (rl resultList) DotResult() []*dot.Result { method Extract (line 207) | func (resultList) Extract(containerWriter, reflect.Value) { method ExtractList (line 214) | func (rl resultList) ExtractList(cw containerWriter, values []reflect.... function newResultList (line 179) | func newResultList(ctype reflect.Type, opts resultOptions) (resultList, ... type resultSingle (line 233) | type resultSingle struct method DotResult (line 238) | func (rs resultSingle) DotResult() []*dot.Result { method Extract (line 249) | func (rs resultSingle) Extract(cw containerWriter, v reflect.Value) { type resultObject (line 257) | type resultObject struct method DotResult (line 262) | func (ro resultObject) DotResult() []*dot.Result { method Extract (line 294) | func (ro resultObject) Extract(cw containerWriter, v reflect.Value) { function newResultObject (line 270) | func newResultObject(t reflect.Type, opts resultOptions) (resultObject, ... type resultObjectField (line 301) | type resultObjectField struct method DotResult (line 315) | func (rof resultObjectField) DotResult() []*dot.Result { function newResultObjectField (line 321) | func newResultObjectField(idx int, f reflect.StructField, opts resultOpt... type resultGrouped (line 360) | type resultGrouped struct method DotResult (line 368) | func (rt resultGrouped) DotResult() []*dot.Result { method Extract (line 396) | func (rt resultGrouped) Extract(cw containerWriter, v reflect.Value) { function newResultGrouped (line 380) | func newResultGrouped(f reflect.StructField) (resultGrouped, error) { FILE: vendor/go.uber.org/dig/stringer.go method String (line 30) | func (c *Container) String() string { method String (line 54) | func (n *node) String() string { method String (line 58) | func (k key) String() string { method String (line 68) | func (pl paramList) String() string { method String (line 76) | func (sp paramSingle) String() string { method String (line 95) | func (op paramObject) String() string { method String (line 103) | func (pt paramGroupedSlice) String() string { FILE: vendor/go.uber.org/dig/types.go type digSentinel (line 40) | type digSentinel interface type In (line 60) | type In struct type Out (line 81) | type Out struct function isError (line 83) | func isError(t reflect.Type) bool { function IsIn (line 97) | func IsIn(o interface{}) bool { function IsOut (line 111) | func IsOut(o interface{}) bool { function embedsType (line 116) | func embedsType(i interface{}, e reflect.Type) bool { FILE: vendor/go.uber.org/dig/version.go constant Version (line 24) | Version = "1.6.0" FILE: vendor/google.golang.org/appengine/cloudsql/cloudsql.go function Dial (line 60) | func Dial(instance string) (net.Conn, error) { FILE: vendor/google.golang.org/appengine/cloudsql/cloudsql_classic.go function connect (line 15) | func connect(instance string) (net.Conn, error) { FILE: vendor/google.golang.org/appengine/cloudsql/cloudsql_vm.go function connect (line 14) | func connect(instance string) (net.Conn, error) {