The Way to Go: a Thorough Introduction to the Go Programming
Total Page:16
File Type:pdf, Size:1020Kb
THE WAY TO GO A Thorough Introduction to the Go Programming Language IVO BALBAERT THE WAY TO GO Also by Ivo Balbaert: “Handboek Programmeren met Ruby en Rails.”, 2009, Van Duuren Media, ISBN: 978-90-5940-365-9 THE WAY TO GO A Thorough Introduction to the Go Programming Language IVO BALBAERT iUniverse, Inc. Bloomington The Way to Go A Thorough Introduction to the Go Programming Language Copyright © 2012 by Ivo Balbaert. All rights reserved. No part of this book may be used or reproduced by any means, graphic, electronic, or mechanical, including photocopying, recording, taping or by any information storage retrieval system without the written permission of the publisher except in the case of brief quotations embodied in critical articles and reviews. iUniverse books may be ordered through booksellers or by contacting: iUniverse 1663 Liberty Drive Bloomington, IN 47403 www.iuniverse.com 1-800-Authors (1-800-288-4677) Because of the dynamic nature of the Internet, any web addresses or links contained in this book may have changed since publication and may no longer be valid. The views expressed in this work are solely those of the author and do not necessarily reflect the views of the publisher, and the publisher hereby disclaims any responsibility for them. Any people depicted in stock imagery provided by Thinkstock are models, and such images are being used for illustrative purposes only. Certain stock imagery © Thinkstock. ISBN: 978-1-4697-6916-5 (sc) ISBN: 978-1-4697-6917-2 (ebk) Printed in the United States of America iUniverse rev. date: 03/05/2012 CONTENTS Preface ................................................................................................................................xix PART 1—WHY LEARN GO—GETTING STARTED Chapter 1—Origins, Context and Popularity of Go ..............................................................1 1.1 Origins and evolution ...............................................................................................1 1.2 Main characteristics, context and reasons for developing a new language ...................4 1.2.1 Languages that influenced Go ........................................................................4 1.2.2 Why a new language? .....................................................................................5 1.2.3 Targets of the language ...................................................................................5 1.2.4 Guiding design principles ..............................................................................7 1.2.5 Characteristics of the language .......................................................................7 1.2.6 Uses of the language .......................................................................................8 1.2.7 Missing features? ............................................................................................9 1.2.8 Programming in Go .....................................................................................10 1.2.9 Summary .....................................................................................................10 Chapter 2—Installation and Runtime Environment ...........................................................11 2.1 Platforms and architectures ....................................................................................11 (1) The gc Go-compilers: .................................................................................11 (2) The gccgo-compiler: ...................................................................................13 (3) File extensions and packages: ......................................................................14 2.2 Go Environment variables .......................................................................................14 2.3 Installing Go on a Linux system ..............................................................................16 2.4 Installing Go on an OS X system ............................................................................21 2.5 Installing Go on a Windows system.........................................................................21 2.6 What is installed on your machine? ........................................................................26 2.7 The Go runtime ......................................................................................................27 2.8 A Go interpreter .....................................................................................................27 Chapter 3—Editors, IDE’s and Other tools.........................................................................28 3.1 Basic requirements for a decent Go development environment ................................28 3.2 Editors and Integrated Development Environments ................................................29 3.2.1. Golang LiteIDE .........................................................................................32 3.2.2. GoClipse .....................................................................................................33 3.3 Debuggers ...............................................................................................................34 3.4 Building and running go-programs with command- and Makefiles .........................35 3.5 Formatting code: go fmt or gofmt ...........................................................................39 3.6 Documenting code: go doc or godoc .......................................................................40 3.7 Other tools ..............................................................................................................41 3.8 Go’s performance ....................................................................................................41 3.9 Interaction with other languages. .............................................................................43 3.9.1. Interacting with C ......................................................................................43 3.9.2. Interacting with C++ ...................................................................................45 PART 2—CORE CONSTRUCTS AND TECHNIQUES OF THE LANGUAGE Chapter 4—Basic constructs and elementary data types ......................................................49 4.1. Filenames—Keywords—Identifiers .........................................................................49 4.2. Basic structure and components of a Go-program ..................................................50 4.2.1 Packages, import and visibility .....................................................................51 4.2.3 Comments ...................................................................................................56 4.2.4 Types............................................................................................................57 4.2.5 General structure of a Go-program ..............................................................58 4.2.6 Conversions .................................................................................................60 4.2.7 About naming things in Go .........................................................................60 4.3. Constants ...............................................................................................................60 4.4. Variables .................................................................................................................63 4.4.1 Introduction ................................................................................................63 4.4.2 Value types and reference types ....................................................................66 4.4.3 Printing........................................................................................................68 4.4.4 Short form with the := assignment operator .................................................69 4.4.5 Init-functions ...............................................................................................70 4.5. Elementary types and operators ..............................................................................73 4.5.1. Boolean type bool .......................................................................................73 4.5.2. Numerical types ..........................................................................................75 4.5.2.1 ints and floats ............................................................................................75 4.5.2.2 Complex numbers ....................................................................................79 4.5.2.3 Bit operators .............................................................................................79 4.5.2.4 Logical operators .......................................................................................81 4.5.2.5 Arithmetic operators ................................................................................82 4.5.2.6 Random numbers .....................................................................................82 4.5.3. Operators and precedence ...........................................................................84 4.5.4. Aliasing types ..............................................................................................84 4.5.5. Character type ............................................................................................85 4.6. Strings ....................................................................................................................86 4.7. The strings and strconv package .............................................................................88