Este curso aborda as características core da linguagem Go, comparando-as com outras linguagens como o Java ou Javascript.
Go Language Programming
A definir
Destinatários
- Programadores de Java ou Javascript que queiram começar a programar em linguagem Go.
Pré-Requisitos
- Conhecimentos de Inglês;
- Bons conhecimentos de programação;
- Experiência anterior de linguagem Java e/ou Javascript.
Metodologia
- Módulos de formação, integrados numa ótica de sessões mistas de teoria e prática com acompanhamento permanente e personalizado por parte de um formador;
- Serão elaborados exercícios e simulações de situações práticas garantindo uma aprendizagem mais eficaz;
- Os conteúdos ministrados durante o curso são devidamente acompanhados por material didático, distribuídos aos participantes.
Programa
- Why Go?
- Go Language Overview
- Control Structures
- Functions
- Arrays and Slices
- Maps
- Packages
- Structs and Methods
- Interfaces
- Error Handling and Testing
- Concurrency
- Communication
Why Go?
- Origins and evolution of Go
- Reasons for developing in Go
- Tooling and setting up a development environment
- Hello world
- Compiling and running code
- Go playground
Go Language Overview
- Keywords and identifiers
- Packages and import
- Variables, constants and data types
- Pointers
- User defined types and structs
- Basic input and output of a program
Control Structures
- if-else
- switch-case
- for
- for range
- break and continue
- labels and goto
Functions
- Parameters and return values
- Defer and tracing
- Built-in functions
- Recursive functions
- Higher-order functions
- Closures
- Functions as returns
Arrays and Slices
- Declaration and initialization
- Array literals
- Slices
- Multidimensionality
- Reslicing
- Copying and appending slices
Maps
- Declaration and initialization
- Existence of key-value item
- Slice of maps
- Sorting and inverting
Packages
- Overview of the standard library
- Custom packages and visibility
- Documenting packages
- Package file structure and use
- Using git for distribution
- External packages, projects and libraries
- Discovering external packages
- Installing external packages
Structs and Methods
- Structs concepts
- Factory method
- Structs with tags
- Anonymous fields and embedded structs
- Methods vs functions
- Receivers in methods as pointers and values
- Non-exported fields
- Methods on embedded types
- Composition over inheritance
- Garbage collection and SetFinalizer
Interfaces
- What is an interface?
- Implementation of interfaces
- Dynamic types
- OO in Go
Error Handling and Testing
- Error handling
- Run-time exceptions and panic
- Recover
- Testing
Concurrency
- Handling Concurrency and parallelism
- Goroutines
- Channels
- Channel directionality
- Synchronization of goroutines
Communication
- Reading and writing
- Command line arguments
- Executing OS commands
- Networking