# 項目進度

- [x] Preface
- [x] Chapter 1: Tutorial
 - [x] 1.1 Hello, World
 - [x] 1.2 Command-Line Arguments
 - [x] 1.3 Finding Duplicate Lines
 - [x] 1.4 Animated GIFs
 - [x] 1.5 Fetching a URL
 - [x] 1.6 Fetching URLs Concurrently
 - [x] 1.7 A Web Server
 - [x] 1.8 Loose Ends
- [x] Chapter 2: Program Structure
 - [x] 2.1 Names
 - [x] 2.2 Declarations
 - [x] 2.3 Variables
 - [x] 2.4 Assignments
 - [x] 2.5 Type Declarations
 - [x] 2.6 Packages and Files
 - [x] 2.7 Scope
- [x] Chapter 3: Basic Data Types
 - [x] 3.1 Integers
 - [x] 3.2 Floating-Point Numbers
 - [x] 3.3 Complex Numbers
 - [x] 3.4 Booleans
 - [x] 3.5 Strings
 - [x] 3.6 Constants
- [x] Chapter 4: Composite Types
 - [x] 4.1 Arrays
 - [x] 4.2 Slices
 - [x] 4.3 Maps
 - [x] 4.4 Structs
 - [x] 4.5 JSON
 - [x] 4.6 Text and HTML Templates
- [x] Chapter 5: Functions
 - [x] 5.1 Function Declarations
 - [x] 5.2 Recursion
 - [x] 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
- [x] Chapter 6: Methods
 - [x] 6.1 Method Declarations
 - [x] 6.2 Methods with a Pointer Receiver
 - [x] 6.3 Composing Types by Struct Embedding
 - [x] 6.4 Method Values and Expressions
 - [x] 6.5 Example: Bit Vector Type
 - [x] 6.6 Encapsulation
- [x] Chapter 7: Interfaces
 - [x] 7.1 Interfaces as Contracts
 - [x] 7.2 Interface Types
 - [x] 7.3 Interface Satisfaction
 - [x] 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
- [x] Chapter 8: Goroutines and Channels
 - [x] 8.1 Goroutines
 - [x] 8.2 Example: Concurrent Clock Server
 - [x] 8.3 Example: Concu rent Echo Server
 - [x] 8.4 Channels
 - [x] 8.5 Looping in Parallel
 - [x] 8.6 Example: Concurrent Web Crawler
 - [x] 8.7 Multiplexing with select
 - [x] 8.8 Example: Concurrent Directory Traversal
 - [x] 8.9 Cancellation
 - [x] 8.10 Example: Chat Server
- [x] Chapter 9: Concurrency with Shared Variables
 - [ ] 9.1 Race Conditions
 - [ ] 9.2 Mutual Exclusion: sync.Mutex
 - [x] 9.3 Read/Write Mutexes: sync.RWMutex
 - [ ] 9.4 Memory Synchronization
 - [ ] 9.5 Lazy Initialization: sync.Once
 - [x] 9.6 The Race Detector
 - [ ] 9.7 Example: Concurrent Non-Blocking Cache
 - [ ] 9.8 Goroutines and Threads
- [x] Chapter 10: Packages and the Go Tool
 - [x] 10.1 Introduction
 - [x] 10.2 Import Paths
 - [x] 10.3 The Package Declaration
 - [x] 10.4 Import Declarations
 - [x] 10.5 Blank Imports
 - [x] 10.6 Packages and Naming
 - [x] 10.7 The Go Tool
- [x] Chapter 11: Testing
 - [x] 11.1 The go test Tool
 - [x] 11.2 Test Functions
 - [x] 11.3 Coverage
 - [x] 11.4 Benchmark Functions
 - [x] 11.5 Profiling
 - [x] 11.6 Example Functions
- [x] Chapter 12: Reflection
 - [x] 12.1 Why Reflection?
 - [x] 12.2 reflect.Type and reflect.Value
 - [x] 12.3 Display, a Recursive Value Printer
 - [x] 12.4 Example: Encoding S-Expressions
 - [x] 12.5 Setting Variables with reflect.Value
 - [x] 12.6 Example: Decoding S-Expressions
 - [x] 12.7 Accessing Struct Field Tags
 - [x] 12.8 Displaying the Methods of a Type
 - [x] 12.9 A Word of Caution
- [x] Chapter 13: Low-Level Programming
 - [x] 13.1 unsafe.Sizeof, Alignof, and Offsetof
 - [x] 13.2 unsafe.Pointer
 - [x] 13.3 Example: Deep Equivalence
 - [x] 13.4 Calling C Code with cgo
 - [x] 13.5 Another Word of Caution
- [ ] Errata
