ebook img

Go in Action PDF

266 Pages·2015·8.472 MB·English
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Go in Action

William Kennedy Brian Ketelsen WITH Erik St. Martin F Steve Francia OREWORD BY M A N N I N G Go in Action Licensed to Mark Watson <[email protected]> Licensed to Mark Watson <[email protected]> Go in Action WILLIAM KENNEDY WITH BRIAN KETELSEN AND ERIK ST. MARTIN MANNING SHELTER ISLAND Licensed to Mark Watson <[email protected]> For online information and ordering of this and other Manning books, please visit www.manning.com. The publisher offers discounts on this book when ordered in quantity. For more information, please contact Special Sales Department Manning Publications Co. 20 Baldwin Road PO Box 761 Shelter Island, NY 11964 Email: [email protected] ©2016 by Manning Publications Co. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by means electronic, mechanical, photocopying, or otherwise, without prior written permission of the publisher. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in the book, and Manning Publications was aware of a trademark claim, the designations have been printed in initial caps or all caps. Recognizing the importance of preserving what has been written, it is Manning’s policy to have the books we publish printed on acid-free paper, and we exert our best efforts to that end. Recognizing also our responsibility to conserve the resources of our planet, Manning books are printed on paper that is at least 15 percent recycled and processed without the use of elemental chlorine. Manning Publications Co. Development editor: Jennifer Stout 20 Baldwin Road Technical development editor: Kim Shrier PO Box 761 Copyeditor: Jodie Allen Shelter Island, NY 11964 Proofreader: Katie Tennant Technical proofreader: Jimmy Frasché Typesetter: Dottie Marsico Cover designer: Marija Tudor ISBN 9781617291784 Printed in the United States of America 1 2 3 4 5 6 7 8 9 10 – EBM – 20 19 18 17 16 15 Licensed to Mark Watson <[email protected]> brief contents 1 ■ Introducing Go 1 2 ■ Go quick-start 9 3 ■ Packaging and tooling 39 4 ■ Arrays, slices, and maps 57 5 ■ Go’s type system 88 6 ■ Concurrency 128 7 ■ Concurrency patterns 158 8 ■ Standard library 184 9 ■ Testing and benchmarking 211 v Licensed to Mark Watson <[email protected]> Licensed to Mark Watson <[email protected]> contents foreword xi preface xiii acknowledgments xiv about this book xvi about the cover illustration xix 1 Introducing Go 1 1.1 Solving modern programming challenges with Go 2 Development speed 3 ■ Concurrency 3 ■ Go’s type system 5 Memory management 7 1.2 Hello, Go 7 Introducing the Go Playground 8 1.3 Summary 8 2 Go quick-start 9 2.1 Program architecture 10 2.2 Main package 11 2.3 Search package 13 search.go 14 ■ feed.go 22 ■ match.go/default.go 26 2.4 RSS matcher 32 2.5 Summary 38 vii Licensed to Mark Watson <[email protected]> viii CONTENTS 3 Packaging and tooling 39 3.1 Packages 40 Package-naming conventions 40 ■ Package main 40 3.2 Imports 42 Remote imports 42 ■ Named imports 43 3.3 init 44 3.4 Using Go tools 45 3.5 Going farther with Go developer tools 47 go vet 47 ■ Go format 48 ■ Go documentation 48 3.6 Collaborating with other Go developers 51 Creating repositories for sharing 51 3.7 Dependency management 52 Vendoring dependencies 52 ■ Introducing gb 54 3.8 Summary 56 4 Arrays, slices, and maps 57 4.1 Array internals and fundamentals 57 Internals 58 ■ Declaring and initializing 58 ■ Working with arrays 60 ■ Multidimensional arrays 62 ■ Passing arrays between functions 64 4.2 Slice internals and fundamentals 65 Internals 65 ■ Creating and initializing 65 ■ Working with slices 68 ■ Multidimensional slices 79 ■ Passing slices between functions 80 4.3 Map internals and fundamentals 81 Internals 81 ■ Creating and initializing 83 ■ Working with maps 84 ■ Passing maps between functions 86 4.4 Summary 87 5 Go’s type system 88 5.1 User-defined types 89 5.2 Methods 92 5.3 The nature of types 96 Built-in types 96 ■ Reference types 97 ■ Struct types 98 Licensed to Mark Watson <[email protected]> CONTENTS ix 5.4 Interfaces 101 Standard library 102 ■ Implementation 104 ■ Method sets 105 ■ Polymorphism 109 5.5 Type embedding 111 5.6 Exporting and unexporting identifiers 119 5.7 Summary 127 6 Concurrency 128 6.1 Concurrency versus parallelism 129 6.2 Goroutines 132 6.3 Race conditions 139 6.4 Locking shared resources 142 Atomic functions 142 ■ Mutexes 145 6.5 Channels 147 Unbuffered channels 148 ■ Buffered channels 153 6.6 Summary 157 7 Concurrency patterns 158 7.1 Runner 158 7.2 Pooling 167 7.3 Work 177 7.4 Summary 183 8 Standard library 184 8.1 Documentation and source code 185 8.2 Logging 187 Log package 187 ■ Customized loggers 191 Conclusion 195 8.3 Encoding/Decoding 196 Decoding JSON 196 ■ Encoding JSON 201 Conclusion 202 8.4 Input and output 203 Writer and Reader interfaces 203 ■ Working together 205 Simple curl 208 ■ Conclusion 210 8.5 Summary 210 Licensed to Mark Watson <[email protected]>

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.