Go is awesome! It looks like C, but don't be deceived - it is completely different! The Go Programming Language is a new programming language from Google. It is very different than many other modern programming languages, and is a great substitute for C or C++. In this course we will cover most of the Go programming language and look at some of the neat things we can do with Go. We'll progressively cover each important concept in the language and finally end by looking at concurrency (which is built into the language.) If you are looking for an extremely fast an efficient language that is an elegant replacement for traditional systems programming languages like C or C++, Go might be just what you are looking for. Go allows you many of the benefits of powerful low level languages, but is very easy to use and designed with today's programming environment in mind. By the end of this course you should be ready to start programming in Go!
Go Overview Hi. This is John Sonmez from Pluralsight and welcome to this course on an exciting new programming language from Google called, "Go" or sometimes known as golang. By the end of this course you will be able to write a Go application, and we're not going to assume here that you have any previous experience with Go or even a lot of programming experience in general. The Go language is quite different from a lot of other programming languages that are in use today. For example, management of concurrency is baked right into the language. So, even someone who is fairly experienced in programming with other languages will probably find that this course is going to be useful to them and won't be boring. This course is going to cover all of the programming features of the Go language in some depth, but not beyond the pragmatic details that you'll need to write in application. In this first module we're going to cover the background and history of Go and then we're go into high level of coverage of the programming features. The following modules will drill down into these topics. So, let's go and get started.
Go Development Hi this is John Sonmez from Pluralsight and in this module we're going to be talking about the Go Development environment. So before we can start learning about the Go language and seeing the results of our Go program code, we need to have an environment that we can run Go inside of, and it can be a little bit confusing to new Go developers because there's not just a regular standard Go IDE. There's quite a few different options so I'm going to go over those options with you, and show you how to get your Go environment setup so that we can use that for the remainder of this course.
Variables, Types and Pointers ( Background Sounds ) Hi, this is John Sonmez from Pluralsight. In this module we're going to be talking about variables, types and pointers in the Go programming language. So up to this point we haven't really gotten into much of the actual language of Go, but in this module and in all the future modules we're going to be actually going into the language and doing some examples in code, so things are really going to start pick up from this point forward. But you should have your development environment set up now and in all of the upcoming examples we're going to be using the IntelliJ with the Go plug in, or that Go IDE for doing our examples.
Functions John Sonmez: Hi, this is John Sonmez from Pluralsight, and in this module we're going to be diving into functions in Go. So, Go functions are pretty different from functions in many other programming languages. Go functions act more like types, and indeed, they are actually types in Go, and they also let you do something that I've always wanted to do in many different programming languages, which is to return multiple values.
Branching John Sonmez: Hi. This is John Sonmez from Pluralsight and in this module we're going to be covering the branching statements in Go. Now any programming language is going to need branching statements in order for us to be able to implement conditional logic or to change the flow of our code in different directions so that we don't just flow straight through it. We're going to learn about the two branching statements that are used in Go in order to do this, the if statement and the switch statement. And you may think that you already know about the if statement and the switch statement because they're very basic statements, but they're a little bit different than Go. The if statement is just slightly different than what you're probably used to, but the switch statement is completely different in many aspects in Go. And I think that the way that it works inside Go might surprise you if you're used to using switch statements in other programming languages.
Loops John Sonmez: Hi. This is John Sonmez from Pluralsight. In this module we're going to be covering loops in Go. And this is going to be a fairly short module because there's not a lot to cover as far as loops go in Go. In fact, there is actually only one type of loop which is the For Loop. Now we can use this in ways to create all the other type of looping constructs that you may be used to in many other programming languages, but we only have really the one keyword "For" that we use for our loops.
Maps John Sonmez: Hi. This is John Sonmez from Pluralsight and in this module we're going to be covering Maps in the Go programming language. Now in Go maps are actually built right into the language. They're not in an additional library that you have to import or use. They're basically natively built in and so a lot of the ways that you use Go are going to lend themselves to maps and you'll find that maps are first class citizens in the programming language. You'll also find that because Go does not have a actual class we can use strucs somewhat like classes, but because there is not actual classes that many times, may data structures that would use that might be nested classes or inheritant hierarchies in order to create a collection of things that you're going to actually implement using maps or slices. Let's go ahead and dive into maps by starting off understanding what exactly a map is.
Slices ( Noises ) John Sonmez: Hi. This is John Sonmez from Pluralsight, and in this module we're going to be covering slices in the Go programming language. Now we've seen just a little bit of slices as we've used them or referred to them in some of the other modules in this course, but in this course we're going to dig deep into this basic type in Go and see how slices are useful, and it's not too foreign of a concept if you're familiar with arrays or vectors or lists in many other programming languages. Slices are basically going to allow you to do a very similar thing, but they have an interesting trade off in that they have the flexibility of some of the more advanced data types, things that you might use to store a collection of objects, but they also have the memory and performance characteristics in many ways of simpler data types like an array.
Methods and Interface ( Silence ) Hi, this is John Sonmez from Pluralsight and in this module we're going to be covering methods and interfaces in the Go Programming Language. Now Go handles methods and interfaces much different than many other programming languages that you might be used to. For example, if you're used to C-sharp or Java, you'll find that Go methods and interfaces are quite different. Now a lot of this is because Go doesn't have a notion of a class, but you'll find that the way that Go handles methods and interfaces allows for a really large amount of flexibility and allows you to do some pretty neat tricks that you wouldn't be able to do otherwise, and in many other programming languages.
Concurrency John Sonmez: Hi. This is John Sonmez from Pluralsight, and in this module we're going to be covering concurrency in the Go programming language. Now the Go programming language is actually pretty unique because it has the idea of concurrency built into the language. It's not something that you have to do with an additional library or that you consciously have to utilize as a developer. Instead it's baked right into the language. There's several constructs that we can use that will help us to write concurrent Go code and the language itself is designed to handle that and to make it very easy for us. You'll find that when you're writing concurrent Go code, you don't really have to think about a lot of the same concerns that you might have to in many other programming languages since Go was designed with concurrency in mind. ( Silence )