List of Listings

Chapter 2. Go quick-start

Listing 2.1. Project structure for the application

Listing 2.2. main.go

Listing 2.3. main.go: line 01

Listing 2.4. main.go: lines 03–09

Listing 2.5. main.go: line 07

Listing 2.6. main.go: lines 11–15

Listing 2.7. main.go: lines 19–20

Listing 2.8. search/search.go: lines 01–09

Listing 2.9. GOROOT and GOPATH environmental variables

Listing 2.10. search/search.go: lines 08–09

Listing 2.11. Making a map

Listing 2.12. search/search.go: lines 11–57

Listing 2.13. search/search.go: lines 11–12

Listing 2.14. main.go: lines 17–21

Listing 2.15. search/search.go: lines 13–17

Listing 2.16. search/search.go: lines 13–14

Listing 2.17. search/search.go: lines 19–20

Listing 2.18. search/search.go: lines 22–27

Listing 2.19. search/search.go: lines 29–42

Listing 2.20. search/search.go: lines 29–30

Listing 2.21. search/search.go: lines 31–35

Listing 2.22. search/search.go: lines 37–41

Listing 2.23. search/search.go: lines 39–40

Listing 2.24. search/search.go: lines 29–32

Listing 2.25. search/search.go: lines 44–57

Listing 2.26. feed.go: lines 01–08

Listing 2.27. data.json

Listing 2.28. feed.go: lines 10–15

Listing 2.29. feed.go: lines 17–36

Listing 2.30. feed.go: lines 25–27

Listing 2.31. feed.go: lines 29–36

Listing 2.32. Using the empty interface

Listing 2.33. search/search.go : lines 29 - 42

Listing 2.34. search/match.go: lines 01–17

Listing 2.35. search/default.go: lines 01–15

Listing 2.36. search/default.go: line 13

Listing 2.37. Example of method calls

Listing 2.38. Example of interface method call restrictions

Listing 2.39. search/match.go: lines 19–33

Listing 2.40. search/match.go: lines 35–43

Listing 2.41. search/search.go: lines 44–57

Listing 2.42. search/match.go: lines 29–32

Listing 2.43. search/match.go: lines 38–42

Listing 2.44. search/default.go: lines 06–10

Listing 2.45. main.go: lines 07–08

Listing 2.46. search/search.go: lines 59–67

Listing 2.47. Expected RSS feed document

Listing 2.48. matchers/rss.go: lines 01–12

Listing 2.49. matchers/rss.go: lines 14–58

Listing 2.50. matchers/rss.go: lines 60–61

Listing 2.51. matchers/rss.go: lines 63–67

Listing 2.52. main.go: lines 07–08

Listing 2.53. matchers/rss.go: lines 114–140

Listing 2.54. matchers/rss.go: lines 69–112

Listing 2.55. matchers/rss.go: line 71

Listing 2.56. matchers/rss.go: lines 75–79

Listing 2.57. matchers/rss.go: lines 81–86

Listing 2.58. matchers/rss.go: lines 88–94

Chapter 3. Packaging and tooling

Listing 3.1. Traditional Hello World! application

Listing 3.2. Invalid Go program with main function

Listing 3.3. Import statement blocks

Listing 3.4. Renaming imports

Listing 3.5. init function usage

Listing 3.6. Blank identifier import aliasing

Listing 3.7. Working with the io package

Listing 3.8. Working with go vet

Listing 3.9. Project using godep

Listing 3.10. Before vendoring

Listing 3.11. After vendoring

Listing 3.12. Example of a gb project

Listing 3.13. The location for the code you write for the project

Listing 3.14. The location of vendored code

Listing 3.15. Import paths for gb projects

Listing 3.16. Building a gb project

Chapter 4. Arrays, slices, and maps

Listing 4.1. Declaring an array set to its zero value

Listing 4.2. Declaring an array using an array literal

Listing 4.3. Declaring an array with Go calculating size

Listing 4.4. Declaring an array initializing specific elements

Listing 4.5. Accessing array elements

Listing 4.6. Accessing array pointer elements

Listing 4.7. Assigning one array to another of the same type

Listing 4.8. Compiler error assigning arrays of different types

Listing 4.9. Assigning one array of pointers to another

Listing 4.10. Declaring two-dimensional arrays

Listing 4.11. Accessing elements of a two-dimensional array

Listing 4.12. Assigning multidimensional arrays of the same type

Listing 4.13. Assigning multidimensional arrays by index

Listing 4.14. Passing a large array by value between functions

Listing 4.15. Passing a large array by pointer between functions

Listing 4.16. Declaring a slice of strings by length

Listing 4.17. Declaring a slice of integers by length and capacity

Listing 4.18. Compiler error setting capacity less than length

Listing 4.19. Declaring a slice with a slice literal

Listing 4.20. Declaring a slice with index positions

Listing 4.21. Declaration differences between arrays and slices

Listing 4.22. Declaring a nil slice

Listing 4.23. Declaring an empty slice

Listing 4.24. Declaring an array using an array literal

Listing 4.25. Taking the slice of a slice

Listing 4.26. How length and capacity are calculated

Listing 4.27. Calculating the new length and capacity

Listing 4.28. Potential consequence of making changes to a slice

Listing 4.29. Runtime error showing index out of range

Listing 4.30. Using append to add an element to a slice

Listing 4.31. Using append to increase the length and capacity of a slice

Listing 4.32. Declaring a slice of string using a slice literal

Listing 4.33. Performing a three-index slice

Listing 4.34. How length and capacity are calculated

Listing 4.35. Runtime error setting capacity larger than existing capacity

Listing 4.36. Benefits of setting length and capacity to be the same

Listing 4.37. Appending to a slice from another slice

Listing 4.38. Iterating over a slice using for range

Listing 4.39. range provides a copy of each element

Listing 4.40. Using the blank identifier to ignore the index value

Listing 4.41. Iterating over a slice using a traditional for loop

Listing 4.42. Declaring a multidimensional slice

Listing 4.43. Composing slices of slices

Listing 4.44. Passing slices between functions

Listing 4.45. Declaring a map using make

Listing 4.46. Declaring an empty map using a map literal

Listing 4.47. Declaring a map that stores slices of strings

Listing 4.48. Assigning values to a map

Listing 4.49. Runtime error assigned to a nil map

Listing 4.50. Retrieving a value from a map and testing existence.

Listing 4.51. Retrieving a value from a map testing the value for existence

Listing 4.52. Iterating over a map using for range

Listing 4.53. Removing an item from a map

Listing 4.54. Passing maps between functions

Listing 4.55. Output for listing 4.54

Chapter 5. Go’s type system

Listing 5.1. Declaration of a struct type

Listing 5.2. Declaration of a variable of the struct type set to its zero value

Listing 5.3. Declaration of a variable of the struct type using a struct literal

Listing 5.4. Creating a struct type value using a struct literal

Listing 5.5. Creating a struct type value without declaring the field names

Listing 5.6. Declaring fields based on other struct types

Listing 5.7. Using struct literals to create values for fields

Listing 5.8. Declaration of a new type based on an int64

Listing 5.9. Compiler error assigning value of different types

Listing 5.10. Actual compiler error

Listing 5.11. listing11.go

Listing 5.12. Output for listing11.go

Listing 5.13. listing11.go: lines 09–20

Listing 5.14. Declaration of a method with a value receiver

Listing 5.15. listing11.go: lines 29–32

Listing 5.16. Calling a method from a variable

Listing 5.17. listing11.go: lines 34–37

Listing 5.18. What Go is doing underneath the code

Listing 5.19. listing11.go: lines 22–25

Listing 5.20. listing11.go: lines 36, 44–46

Listing 5.21. listing11.go: line 31

Listing 5.22. What Go is doing underneath the code

Listing 5.23. golang.org/src/strings/strings.go: lines 620–625

Listing 5.24. golang.org/src/os/env.go: lines 38–44

Listing 5.25. golang.org/src/net/ip.go: line 32

Listing 5.26. golang.org/src/net/ip.go: lines 329–337

Listing 5.27. golang.org/src/net/ip.go: lines 318–325

Listing 5.28. golang.org/src/time/time.go: lines 39–55

Listing 5.29. golang.org/src/time/time.go: lines 781–784

Listing 5.30. golang.org/src/time/time.go: lines 610–622

Listing 5.31. golang.org/src/os/file_unix.go: lines 15–29

Listing 5.32. golang.org/src/os/file.go: lines 238–240

Listing 5.33. golang.org/src/os/file.go: lines 224–232

Listing 5.34. listing34.go

Listing 5.35. listing35.go

Listing 5.36. listing36.go

Listing 5.37. listing36.go: lines 40–44

Listing 5.38. listing36.go: lines 28–38

Listing 5.39. Compiler error storing a value of type user to the interface value

Listing 5.40. listing36.go: lines 08–12, 21–25

Listing 5.41. Closer look at compiler error

Listing 5.42. Method sets as described by the specification

Listing 5.43. Method sets from the perspective of the receiver type

Listing 5.44. listing36.go: lines 28–38

Listing 5.45. listing36.go: lines 28–35

Listing 5.46. listing46.go

Listing 5.47. Second look at the method set rules

Listing 5.48. listing48.go

Listing 5.49. listing48.go: lines 40–49

Listing 5.50. listing50.go

Listing 5.51. listing50.go: lines 09–13, 23–27

Listing 5.52. listing50.go: lines 15–21

Listing 5.53. listing50.go: lines 30–45

Listing 5.54. listing50.go: lines 40–41

Listing 5.55. listing50.go: lines 43–45

Listing 5.56. listing56.go

Listing 5.57. listing56.go: lines 08–12, 51–55

Listing 5.58. listing56.go: lines 35–49

Listing 5.59. Output for listing56.go

Listing 5.60. listing60.go

Listing 5.61. listing60.go: lines 35–41

Listing 5.62. listing60.go: lines 43–64

Listing 5.63. Output for listing60.go

Listing 5.64. listing64/

Listing 5.65. counters/counters.go

Listing 5.66. listing64.go

Listing 5.67. listing64.go: lines 13–19

Listing 5.68. listing68/

Listing 5.69. counters/counters.go

Listing 5.70. listing68.go

Listing 5.71. listing71/

Listing 5.72. entities/entities.go

Listing 5.73. listing71.go

Listing 5.74. listing74/

Listing 5.75. entities/entities.go

Listing 5.76. listing74.go: lines 11–24

Chapter 6. Concurrency

Listing 6.1. listing01.go

Listing 6.2. Output for listing01.go

Listing 6.3. listing01.go: lines 17–19, 23–26, 49–51

Listing 6.4. listing04.go

Listing 6.5. Output for listing04.go

Listing 6.6. How to change the number of logical processors

Listing 6.7. listing07.go

Listing 6.8. Output for listing07.go

Listing 6.9. listing09.go

Listing 6.10. Output for listing09.go

Listing 6.11. Building and running listing09 with the race detector

Listing 6.12. Lines of code called out by the race detector

Listing 6.13. listing13.go

Listing 6.14. Output for listing13.go

Listing 6.15. listing15.go

Listing 6.16. listing16.go

Listing 6.17. Using make to create a channel

Listing 6.18. Sending values into a channel

Listing 6.19. Receiving values from a channel

Listing 6.20. listing20.go

Listing 6.21. Output for listing20.go

Listing 6.22. listing22.go

Listing 6.23. Output for listing22.go

Listing 6.24. listing24.go

Listing 6.25. Output for listing24.go

Chapter 7. Concurrency patterns

Listing 7.1. runner/runner.go

Listing 7.2. runner/runner.go: lines 12–28

Listing 7.3. golang.org/pkg/os/#Signal

Listing 7.4. runner/runner.go: lines 19–20

Listing 7.5. runner/runner.go: lines 22–23

Listing 7.6. runner/runner.go: lines 25–27

Listing 7.7. runner/runner.go: lines 30–34

Listing 7.8. runner/runner.go: lines 36–43

Listing 7.9. runner/runner.go: lines 45–49

Listing 7.10. runner/runner.go: lines 72–85

Listing 7.11. runner/runner.go: lines 87–101

Listing 7.12. runner/runner.go: lines 51–70

Listing 7.13. runner/main/main.go

Listing 7.14. pool/pool.go

Listing 7.15. pool/pool.go: lines 12–20

Listing 7.16. pool/pool.go: lines 22–24

Listing 7.17. pool/pool.go: lines 26–38

Listing 7.18. pool/pool.go: lines 40–56

Listing 7.19. pool/pool.go: lines 82–104

Listing 7.20. pool/pool.go: lines 58–80

Listing 7.21. pool/main/main.go

Listing 7.22. pool/main/main.go: lines 21–32

Listing 7.23. pool/main/main.go: lines 34–44

Listing 7.24. pool/main/main.go: lines 48–55

Listing 7.25. pool/main/main.go: lines 57–66

Listing 7.26. pool/main/main.go: lines 68–73

Listing 7.27. pool/main/main.go: lines 76–91

Listing 7.28. work/work.go

Listing 7.29. work/work.go: lines 07–18

Listing 7.30. work/work.go: lines 20–37

Listing 7.31. work/work.go: lines 28–33

Listing 7.32. work/work.go: lines 39–42

Listing 7.33. work/work.go: lines 44–48

Listing 7.34. work/main/main.go

Listing 7.35. work/main/main.go: lines 22–31

Listing 7.36. work/main/main.go: lines 33–64

Chapter 8. Standard library

Listing 8.1. Set of top-level folders and packages in the standard library

Listing 8.2. Sample trace line

Listing 8.3. listing03.go

Listing 8.4. listing03.go: lines 08–11

Listing 8.5. golang.org/src/log/log.go

Listing 8.6. Declaration of the Ldate constant

Listing 8.7. Use of the keyword iota

Listing 8.8. Declaration of the LstdFlags constant

Listing 8.9. listing03.go: lines 08–11

Listing 8.10. listing03.go: lines 13–22

Listing 8.11. listing11.go

Listing 8.12. listing11.go: lines 11–16

Listing 8.13. listing11.go: lines 25–39

Listing 8.14. golang.org/src/log/log.go

Listing 8.15. listing11.go: lines 25–27

Listing 8.16. golang.org/src/io/ioutil/ioutil.go

Listing 8.17. listing11.go: lines 29–35

Listing 8.18. golang.org/src/os/file.go

Listing 8.19. listing11.go: lines 37–39

Listing 8.20. Declaration of the MultiWriter function in the io package

Listing 8.21. listing11.go: lines 42–47

Listing 8.22. Declarations of the different logging methods

Listing 8.23. Google search API sample JSON response

Listing 8.24. listing24.go

Listing 8.25. golang.org/src/encoding/json/stream.go

Listing 8.26. Use of the Decode method

Listing 8.27. listing27.go

Listing 8.28. Output for listing27.go

Listing 8.29. listing29.go

Listing 8.30. Syntax for accessing a field from an unmarshaled map

Listing 8.31. listing31.go

Listing 8.32. golang.org/src/encoding/json/encode.go

Listing 8.33. Declaration of the io.Writer interface

Listing 8.34. Documentation for the io.Writer interface

Listing 8.35. Declaration of the io.Reader interface

Listing 8.36. Documentation for the io.Reader interface

Listing 8.37. listing37.go

Listing 8.38. Output for listing37.go

Listing 8.39. golang.org/src/fmt/print.go

Listing 8.40. golang.org/src/bytes/buffer.go

Listing 8.41. listing37.go: lines 22–25

Listing 8.42. golang.org/src/os/file.go

Listing 8.43. golang.org/src/os/file_unix.go

Listing 8.44. golang.org/src/os/file.go

Listing 8.45. listing37.go: lines 22–25

Listing 8.46. listing46.go

Chapter 9. Testing and benchmarking

Listing 9.1. listing01_test.go

Listing 9.2. listing01_test.go: lines 01–10

Listing 9.3. listing01_test.go: lines 12–13

Listing 9.4. listing01_test.go: lines 14–18

Listing 9.5. listing01_test.go: lines 19–21

Listing 9.6. listing01_test.go: lines 22–30

Listing 9.7. listing01_test.go: lines 32–41

Listing 9.8. listing08_test.go

Listing 9.9. listing08_test.go: lines 12–27

Listing 9.10. listing08_test.go: lines 29–34

Listing 9.11. listing08_test.go: lines 35–55

Listing 9.12. listing12_test.go: lines 01–41

Listing 9.13. listing12_test.go: lines 32–40

Listing 9.14. golang.org/pkg/net/http/#HandlerFunc

Listing 9.15. listing12_test.go: lines 43–74

Listing 9.16. listing12_test.go: line 56

Listing 9.17. listing17.go

Listing 9.18. handlers/handlers.go

Listing 9.19. handlers/handlers_test.go

Listing 9.20. handlers/handlers_test.go: lines 01–03

Listing 9.21. handlers/handlers_test.go: lines 17–19

Listing 9.22. handlers/handlers_test.go: lines 21–34

Listing 9.23. handlers/handlers_test.go: lines 36–39

Listing 9.24. handlers/handlers_test.go: lines 41–49

Listing 9.25. handlers/handlers_test.go: lines 51–63

Listing 9.26. handlers_example_test.go

Listing 9.27. handlers_example_test.go: lines 27–31

Listing 9.28. listing28_test.go: lines 01–10

Listing 9.29. listing28_test.go: lines 12–22

Listing 9.30. listing28_test.go: lines 19–22

Listing 9.31. Running the benchmark test

Listing 9.32. listing28_test.go: lines 24–46

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset