The Go programming language
Material type:
- 13: 9780134190440
Incluye índice.
Contents -- Preface -- The Origins of Go -- The Go Project -- Organization of the Book -- Where to Find More Information -- Acknowledgments -- 1. Tutorial -- 1.1 Hello, World -- 1.2 Command-Line Arguments -- 1.3 Finding Duplicate Lines -- 1.4 Animated GIFs -- 1.5 Fetching a URL -- 1.6 Fetching URLs Concurrently -- 1.7 A Web Server -- 1.8 Loose Ends -- 2. Program Structure -- 2.1 Names -- 2.2 Declarations -- 2.3 Variables -- 2.4 Assignments -- 2.5 Type Declarations -- 2.6 Packages and Files -- 2.7 Scope -- 3. Basic Data Types -- 3.1 Integers -- 3.2 Floating-Point Numbers -- 3.3 Complex Numbers -- 3.4 Booleans -- 3.5 Strings -- 3.6 Constants -- 4. Composite Types -- 4.1 Arrays -- 4.2 Slices -- 4.3 Maps -- 4.4 Structs -- 4.5 JSON -- 4.6 Text and HTML Templates -- 5. Functions -- 5.1 Function Declarations -- 5.2 Recursion -- 5.3 Multiple Return Values -- 5.4 Errors -- 5.5 Function Values -- 5.6 Anonymous Functions -- 5.7 Variadic Functions -- 5.8 Deferred Function Calls -- 5.9 Panic -- 5.10 Recover -- 6. Methods -- 6.1 Method Declarations -- 6.2 Methods with a Pointer Receiver -- 6.3 Composing Types by Struct Embedding -- 6.4 Method Values and Expressions -- 6.5 Example: Bit Vector Type -- 6.6 Encapsulation -- 7. Interfaces -- 7.1 Interfaces as Contracts -- 7.2 Interface Types -- 7.3 Interface Satisfaction -- 7.4 Parsing Flags with flag.Value -- 7.5 Interface Values -- 7.6 Sorting with sort.Interface -- 7.7 The http.Handler Interface -- 7.8 The error Interface -- 7.9 Example: Expression Evaluator -- 7.10 Type Assertions -- 7.11 Discriminating Errors with Type Assertions -- 7.12 Querying Behaviors with Interface Type Assertions -- 7.13 Type Switches -- 7.14 Example: Token-Based XML Decoding -- 7.15 A Few Words of Advice -- 8. Goroutines and Channels -- 8.1 Goroutines -- 8.2 Example: Concurrent Clock Server -- 8.3 Example: Concurrent Echo Server -- 8.4 Channels -- 8.5 Looping in Parallel -- 8.6 Example: Concurrent Web Crawler -- 8.7 Multiplexing with select -- 8.8 Example: Concurrent Directory Traversal -- 8.9 Cancellation -- 8.10 Example: Chat Server -- 9. Concurrency with Shared Variables -- 9.1 Race Conditions -- 9.2 Mutual Exclusion: sync.Mutex -- 9.3 Read/Write Mutexes: sync.RWMutex -- 9.4 Memory Synchronization -- 9.5 Lazy Initialization: sync.Once -- 9.6 The Race Detector -- 9.7 Example: Concurrent Non-Blocking Cache -- 9.8 Goroutines and Threads -- 10. Packages and the Go Tool -- 10.1 Introduction -- 10.2 Import Paths -- 10.3 The Package Declaration -- 10.4 Import Declarations -- 10.5 Blank Imports -- 10.6 Packages and Naming -- 10.7 The Go Tool -- 11. Testing -- 11.1 The go test Tool -- 11.2 Test Functions -- 11.3 Coverage -- 11.4 Benchmark Functions -- 11.5 Profiling -- 11.6 Example Functions -- 12. Reflection -- 12.1 Why Reflection? -- 12.2 reflect.Type and reflect.Value -- 12.3 Display, a Recursive Value Printer -- 12.4 Example: Encoding S-Expressions -- 12.5 Setting Variables with reflect.Value -- 12.6 Example: Decoding S-Expressions -- 12.7 Accessing Struct Field Tags -- 12.8 Displaying the Methods of a Type -- 12.9 A Word of Caution -- 13. Low-Level Programming -- 13.1 unsafe.Sizeof, Alignof, and Offsetof -- 13.2 unsafe.Pointer -- 13.3 Example: Deep Equivalence -- 13.4 Calling C Code with cgo -- 13.5 Another Word of Caution -- Index