I hope this course is helpful! It was a ton of fun to create. I (Lane) can't wait to connect with you all on the Discord and on our UA-cam channel as well
@@apollo2728 Current companies are shitty, always ask for an entry-level developer to have 5+ years of golang experience while golang is being mature less than 5 years....
@@ak.karimzaiI don't think that's the point of the course. You're supposed to get the basics straight and then move on and educate yourself further. Although I get your point that a few minutes on project structure would've been great, but that's just one Google search away
@@ak.karimzai The clean code isn't the point, making a product that prints money is. And what makes a code "clean" differs for each team and context. Startups rush to hit the market before competitors, proven products are more rigorous but also considered "legacy" that makes beginners run like hell. I made my point.
Right now i have no money but i love you guys for the work you do but one i make some i will donate to you guys so that i can continue watching your videos ❤
Great course to quickly ramp up on Go basics. I watched fast fowarding and got through it in a couple days with enough knowledge to start building some Go tuis. Thanks!
I know this is meant as an introduction only, but it would be good to mention things like NOT depending on a delay such as the code when sending and receiving email via go routines. It's better to manage the order of operations in more concrete way. Not mentioning this can lead people to believe that that (adding or depending on delays) is a good way to code, and it rarely is. Otherwise, this is a great video - keep up the great work!
Thank you for your input! I am a Java Developer and currently applying to a Golang job. Great insight! Also if you can spread the knowledge, what could that "more concrete way" be?
2:05:20 you know you could just lift up the logic to declare the user and profile outside of the try block, then call the function and assign value inside the try block, you would have to use the let keyword tho, so to sum up declare with let keyword try catch for operation 1 try catch for operation 2 No nesting
you know that there is a better way to just use var instead, var is functional scoped and not block scope, secondly why would you add the getUser and getUserProfile in two different try catch blocks? if the getUser has failed then it's obvious that the getUserProfile will fail as well because the ID we are using is from the getUser
It's very scary because for the third time in a row you dropped exactly the topic I'm just interested in. A while ago when I started learning Angular, the next day your video dropped. Same thing with typescript before that. And now, I just returned to Go because of Google I/O yesterday and here you are.
Awesome, Anyone who want to switch there career from javascript like me just see this video no need to write any code just try to keep a deep focus first 6 hour
I just reached chapter 6 but I can already say I've been loving it, I am learning so much and the clear division between chapters make it easier to catch up the next day
I havent watched the whole video yet but i wanted to say i appreciate the time you took to create-record and the way you explain these concepts.Thank you
Absolutely loved it! I followed it from start to finish. I would loved a bit more structure around the files on the final project, but overall the way he explains the topics it's very clear
Thank you for covering basic to intermediate go. I've gone through multiple channels but all they covered was basic. Also the examples explained here gives clear idea at which scenario one can use go features
I'm going to "swim" piscine event in 4 days, and I've already watched 7 hours course here and wanted achive more in GO, and now I find this vid! Thank u so much and God bless you!
FCC, Thanks for adding latest Golang course. Pls in future try to add Golang for DevOps and Kubernetes Automation and Backend, as Golang used in such areas 👍👍
Thank you for this extensive course! I'm a Senior Java developer, who might now end up in a new role where they need a Go developer. Having absolutely no experience with Go, this helped me out A LOT! Fortunately, I've touched C/C++ programming before, and that might have helped me understand the "lack of OOP", Pointers etc. But from a Senior Java dev perspective, this is a really good start that gave me a good insight into what I have to focus on to become a good Go developer! So.. Thank you for providing this to us for free! It's greatly appreciated!
Finally a course seems to be relied on. I have been looking for such tutorials to learn this language with a proper tutorial. I read somewhere that this language bridges the gap between java and C++ so it makes things pretty easy to learn. Thanks for the course @bootdotdev
Thank you Lane! I would like to say that you are a wonderful teacher with a sense of humour and really good at explaining concepts in a simple manner. I really enjoyed this course and I can proudly say I'm a gopher now!
A well made tutorial. A great attitude by the tutor. A very interesting project. Thanks a lot. I look forward to working more with the Go programming language in the future.
Wow! No way! I was just thinking as I woke this morning getting ready to finish one of my programs that free code camp needs to make another Golang course!!!! What the heckkkkkk ❤❤❤❤❤❤
🎯 Key Takeaways for quick navigation: 00:00 🎓 This is a comprehensive Go programming course for beginners, covering key concepts and techniques for writing performant, idiomatic Go code. 00:41 🚀 Go has been rapidly growing in popularity due to its speed, lightweight nature, excellent developer experience, and ease of learning. 06:39 👨💻 The course involves hands-on coding challenges to build a production-ready back-end server in Go. 22:21 🔄 Performance is measured in both execution speed (CPU cycles) and memory consumption (RAM usage) to assess a programming language or application's efficiency. 25:47 📊 Go exhibits better memory efficiency compared to Java and is more memory-efficient than Rust as well. In an experiment measuring memory consumption, Go used 100 times less memory than Java when idle. 27:55 🔢 Go has various numeric types, including integers (int and uint), floats (float32 and float64), and complex numbers. The size of a type, like float64, indicates it has 64 bits. 33:25 🔢 If you need to work with fractions or floating-point numbers, use `float64` rather than `int` to store values with fractional parts accurately. 35:21 🏋️♀️ If performance is a primary concern and you need to optimize memory usage, consider using specific types like `int8`, `int16`, etc. Otherwise, stick to the default types for better readability and maintainability. 37:11 ❓ You should not use a default type when a specific size will work, and performance and memory are critical factors. 40:25 🛠️ Constants in Go are immutable values known or computed at compile time. Constants can be used for calculations, but their values must be determined at the time of compilation. 49:02 📉 When initializing a variable in an `if` block, it limits the scope of that variable to only be accessible within that block. 51:05 📝 Functions in Go break up code into individual units that are easier to reason about, and their signatures describe their inputs and outputs. 52:26 🔄 Go passes variables by value, not by reference, and it does not allow unused variables. 01:09:10 🧹 Using named return values to improve code readability and document the purpose of return values in functions. 01:34:39 🛠️ Interfaces in Go are collections of method signatures that enable polymorphism, allowing different types to be treated as the same interface if they implement the methods. 01:35:59 🎈 Multiple types can implement the same interface, allowing for flexible and extensible design in Go programs. 02:00:10 📛 Understand that interfaces in Go are not classes and do not define underlying behavior or hierarchies like traditional object-oriented classes. 02:00:50 🧪 Go's error handling is unique and does not use try-catch blocks like JavaScript or other languages. 02:04:29 🔎 Go's error handling using interfaces allows developers to create custom error types and provide more structured information about the error, improving error handling and debugging capabilities. 02:24:57 🤖 The speaker discusses a function that calculates the cost of sending text messages based on a given formula. 02:26:54 🤖 The speaker creates a function `maxMessages` to find the maximum number of messages to send under a cost threshold using a specific formula. 02:29:31 🤖 Go does not have a dedicated `while` loop; instead, a `for` loop with only a condition serves as a `while` loop in Go. 02:30:53 🤖 The assignment involves writing a function that calculates the number of messages that can be sent based on a cost multiplier and a maximum cost. 02:38:18 🤖 The assignment focuses on implementing the classic FizzBuzz game, printing numbers with specific substitutions for multiples of three and five. 02:51:09 🔄 Slices in Go provide a flexible view into an array and are typically used instead of arrays, as they can dynamically grow and are more developer-friendly. 02:52:14 💻 The assignment involves implementing a function to handle different plans for text message retries, where Pro users get unlimited retries and free users get limited retries. 03:03:47 ⚠️ Slices dynamically expand by copying data into a new memory location when reaching capacity. Pre-allocating slices can enhance performance by minimizing copying. 03:08:24 📊 The assignment involves implementing a function to calculate costs based on message lengths and store them in a slice of float64. 03:10:08 📏 Understanding the difference between "length" (current size of a slice) and "capacity" (maximum size before reallocation) is essential when working with slices in Go. 03:19:47 🔄 Use the `for range` loop syntax to iterate over elements in a slice easily. [03:40:30 URL] 🗺️ Maps can be declared upfront using a colon syntax for keys and values, providing a more efficient way to set key-value pairs in a map. [03:41:12 URL] ⚙️ Using maps can speed up data lookups significantly compared to searching through a slice, making code more efficient. [03:41:40 URL] 🖋️ Creating a map of name to user structs can be achieved by looping through two slices, matching the names to phone numbers and adding them to the map. [03:42:52 URL] 🔍 When using maps as keys, the type must be comparable (strings, booleans, numbers), and not slices, maps, or functions. [03:50:41 URL] 🚫 Maps cannot have duplicate keys; they are unique and can have at most one value associated with each key. 04:03:47 📝 Understanding nested maps and how to initialize them in Go. 04:06:29 📝 Explaining first-class and higher-order functions in Go. 04:13:08 📝 Understanding closures and how they reference variables in Go. 04:14:11 📝 Utilizing defer keyword for cleanup and resource management in Go. 04:52:32 📦 Packages in Go are organized at the directory level, and packages live on GitHub repositories. 05:01:38 🔗 Import paths in Go serve as a prefix for nested packages within the module. 05:08:03 🏃♂️ Use "go run" to quickly run small scripts or programs without producing a compiled binary. 05:11:44 📥 "Go install" compiles and installs the program globally, making it accessible from anywhere on your machine. 05:16:48 💡 To export functions in a package, capitalize their first letter in Go. 05:17:56 🏭 The output of "go build" in a library package is not an executable program; it's silently saved to the local build cache for later use. 05:19:21 🗂️ Go package convention: The package name and the directory name should match, but it's not a strict requirement. 05:27:59 📅 Demonstrating synchronous/sequential programming and how it runs one instruction at a time. 05:38:33 🔄 Writing concurrent code in Go using the "go" keyword to spawn new goroutines for parallel execution. 05:39:30 💼 Go routines allow concurrent execution in Go, allowing functions to run in the background. 05:54:38 🤖 Channels should be closed by the sending routine to indicate no more data will be sent. 06:45:14 📝 Project Introduction: Building a backend server in Go to aggregate data from RSS feeds, requiring basic SQL knowledge, a text editor, command line, Go language, and an HTTP client. 06:52:13 📝 When using the package "github.com/joho/go.env" to load environment variables from a .env file, it might not overwrite the current session environment. It's necessary to restart the shell session to see the changes. 06:59:39 📝 CORS (Cross-Origin Resource Sharing) configuration can be added to the router to allow requests to be made from browsers to the server. It involves setting up headers to specify allowed methods, origins, and headers. 07:20:55 📁 Set up SQLC to generate type-safe Go code for SQL queries, reducing manual work and potential errors. 07:40:30 🤖 The choice between VARCHAR and TEXT data types depends on the desired length and characteristics of the data. VARCHAR(64) is used to store unique API keys of a fixed length. 08:02:10 🤖 Middleware functions can take advantage of closures to access variables from the outer scope, allowing them to handle additional logic before calling the original handler function. 08:05:27 🏭 The speaker defines the parameters required to create a feed object and encounters and resolves a bug related to UUID types in the database schema. 08:08:22 🔨 The speaker creates a new model called "feed" to represent the structure of a feed and discusses the benefits of using custom models for JSON API responses. 08:10:17 🧪 The speaker tests the new "Handler create feed" endpoint using a tool called Thunder Client and successfully creates a new feed. 08:11:17 📝 The speaker implements a new endpoint "Handler get feeds" to retrieve all feeds in the database, providing users with an aggregated view of feeds they are interested in. 08:22:02 💻 The speaker implements the "Handler create feed follow" endpoint, allowing users to follow specific feeds. 08:35 📌 The Chi router in Go (Golang) can grab dynamic values from the request path using the `URLParam` function. 08:39 📌 The server has completed the CRUD section of the API, but it still needs to implement the part that fetches posts from different RSS feeds and updates the database accordingly. 08:54 📌 The server implements a background scraper function to fetch RSS feeds concurrently using goroutines and a ticker. It fetches multiple feeds simultaneously to improve efficiency. 09:04:04 📝 With a concurrency setting of 10, multiple feeds can be fetched simultaneously, but duplicates should be avoided when saving posts to the database. Made with HARPA AI
I'm so glad to learn electronics and binary before ever learning how to code long ago. For me, it's easier to understand what the code is doing by learning how to understand what binary actually is on the CPU.
Ty for this course really helped me to learn go in better way and also as software engineer in Java I'm connecting dots easier and upgrading m self for Go back operations also.
thank you Lane! The course was very helpful to learn Go. But honestly, the project seems to be totally another level, not suitable for beginners. It was very hard to follow, and I had to follow it step by step, copying every character, because I wasn't even sure what does what. Any typo would make me rewatch the video, trying to find the mistake. Probably it would be better to start with easier stuff. Anyway, it was very useful. Now I hope that I can understand everything what was done, how it works, and how to use it in my future projects.
Hello, thank you for the fantastic course, very exciting. I've noticed, that probably, you have misinterpret 'function signature' and confused it with the 'function declaration', since signature usually contains only the function name and list of parameters.
4:18:44 The defer keyword is also used in javascript. If you want to load the javascript file after the html and css been downloaded, then you use defer keyword.
The compiler converts the source code into assembly later it's converted into machine code by assembler. This code is then linked with library files using a linker that results in exe file.
Thanks for the course, I found it useful to know sqlc and it's a clearer alternative to GORM, just for the section of authentication, the authedMiddleware section, it's not considered a middleware it's a wrapper pattern, which caused me trouble when crossed referenced with Chi examples and documentation, thanks again for the effort and sharing your knowledge.
Thank you for all the effort. The quality rapidly decreased after about 8:47:00 (P.6) as the presentation started to loose structure and missed several critical explanations, with lots of rapid scrolls and mistakes and redos.
Correction on the intro: c# is not running on a VM its Just In Time Compilation, its still compiled but any dynamic code from . NET is interpreted once and then ran from cache.
If you took an hour to compile a java app is because you compiled the whole app, which is not the default. Each class can be compiled by it self, most ide for java compile the file you are working on in the background to highlight errors. Fast compile is cool, but is not a reason to choose a language for.
In Chapter 8 with Append function, I don't think your solution would satisfy this requirement: "include a "bucket" for days without any costs". We didn't get to see the result for the second test.
Has a heavy frontend dev of many years. Very nice Go course to dive generally into the ecosystem and get comfortable with the syntax (chi/goose/sqlc) + typing if err != nil over and over...which goes against my nature as a JS dev who never handles their errors lol.
2:03:06 at this time he is saying that it won't work, however he is using const and not var, clearly he is a Go developer, you could use var in the try catch block and it will give us the user in the second try catch and we won't have to do nesting, JS isn't as bad as people make it, secondly the example is bad, why would you try to fetch the profile of the user if getUser has already failed? you don't have to user id so the getUserProfile will fail as well, in this case it makes more sense to just use getUser and getUserProfile in the same try catch block
Chapter3, lesson 12: "When I started writing more JavaScript, I was disappointed to see how many nested conditionals existed in the code I was working on." What do you mean by that? You can write the exactly the same code in javascript. Its not some magic that is done by GO, lol. What am i missing ?
Hey Awesome Tutorial! I had a doubt that which one would you recommend Fiber v3 or Chi v5. Out of them which one would be better for creating projects overall?
Two things that I absolutely hate about the language - the capital letters to denote an exported function, and the formatter imposing tabs over spaces. The former I can deal with, but they should have used a keyword to make it explicit. The latter is why I chose Rust for my latest project. Go is still a great language, but the tabs used by the formatter was a deal breaker for me. I like freedom of choice over an autocracy.
I hope this course is helpful! It was a ton of fun to create. I (Lane) can't wait to connect with you all on the Discord and on our UA-cam channel as well
The best .
Thanks for this. I am going through the whole video and applying job. Lets see
@@sumitkumarsingh4 I hope you get a Job.
Can we get a *playlist* version of this course in (5+ minutes videos) ❓
@@AchwaqKhalid Kinda... Check out the playlist on the Bootdev YT channel, and check out the full course broken up step by step on Boot.dev
Even after over 4 years as a Go developer, this is refreshingly worth my time. You just got yourself a new subscriber Boot dev
but the problem is in project, at the end he didn't divide the code to files, and in project he not uses clean architecture
@@apollo2728 Current companies are shitty, always ask for an entry-level developer to have 5+ years of golang experience while golang is being mature less than 5 years....
@@ak.karimzaiI don't think that's the point of the course. You're supposed to get the basics straight and then move on and educate yourself further. Although I get your point that a few minutes on project structure would've been great, but that's just one Google search away
@@ak.karimzai The clean code isn't the point, making a product that prints money is. And what makes a code "clean" differs for each team and context. Startups rush to hit the market before competitors, proven products are more rigorous but also considered "legacy" that makes beginners run like hell. I made my point.
Can i get a job if i learn this apart from me learning mearn stack and next.js?
Right now i have no money but i love you guys for the work you do but one i make some i will donate to you guys so that i can continue watching your videos ❤
Wow, you must be a huge fan to donate
Today I finished the course, I've learned so much from it and absolutely loved it. Thank you very much for clear and comprehensive tutorial
Buddy how are doing with the go right now
Thanks for a great course!
Small correction for the timestamps:
Generic starts at 06:18:18 and not 06:31:17
Great course to quickly ramp up on Go basics.
I watched fast fowarding and got through it in a couple days with enough knowledge to start building some Go tuis. Thanks!
I loved how we're cutting out the middle man (ORM's) and writing straight SQL.
I know this is meant as an introduction only, but it would be good to mention things like NOT depending on a delay such as the code when sending and receiving email via go routines. It's better to manage the order of operations in more concrete way. Not mentioning this can lead people to believe that that (adding or depending on delays) is a good way to code, and it rarely is. Otherwise, this is a great video - keep up the great work!
Thank you for your input! I am a Java Developer and currently applying to a Golang job. Great insight!
Also if you can spread the knowledge, what could that "more concrete way" be?
This course is fantastic! Something I really liked about it is that your pronounciation is clear even for us that are not native english speakers.
2:05:20 you know you could just lift up the logic to declare the user and profile outside of the try block, then call the function and assign value inside the try block, you would have to use the let keyword tho, so to sum up
declare with let keyword
try catch for operation 1
try catch for operation 2
No nesting
is this still fresh to learn ??
you know that there is a better way to just use var instead, var is functional scoped and not block scope, secondly why would you add the getUser and getUserProfile in two different try catch blocks? if the getUser has failed then it's obvious that the getUserProfile will fail as well because the ID we are using is from the getUser
It's very scary because for the third time in a row you dropped exactly the topic I'm just interested in. A while ago when I started learning Angular, the next day your video dropped. Same thing with typescript before that. And now, I just returned to Go because of Google I/O yesterday and here you are.
is this video helpful beginners ?
Awesome, Anyone who want to switch there career from javascript like me just see this video no need to write any code just try to keep a deep focus first 6 hour
I just reached chapter 6 but I can already say I've been loving it, I am learning so much and the clear division between chapters make it easier to catch up the next day
I mean How? Last night before went to bed, was searching for Go and Now its here!!! I mean thanks and lots of love
Same lmao
we are same minded people🤩
Anyone finished this yet? I'm at concurrency section
@@dipanjanghosal1662 Yes dipanjan, I've finished it a few days ago
@@iamsupriyo oh that's great man. I am finding Go really interesting. Hope this has sufficient jobs too.
I havent watched the whole video yet but i wanted to say i appreciate the time you took to create-record and the way you explain these concepts.Thank you
Absolutely loved it! I followed it from start to finish. I would loved a bit more structure around the files on the final project, but overall the way he explains the topics it's very clear
Thank you for covering basic to intermediate go. I've gone through multiple channels but all they covered was basic. Also the examples explained here gives clear idea at which scenario one can use go features
I'm going to "swim" piscine event in 4 days, and I've already watched 7 hours course here and wanted achive more in GO, and now I find this vid! Thank u so much and God bless you!
good luck bro, by the way i've already done it if you want maybe some help or smthg else you can vemail me ;)
@@whoisozdem1853 Can you please tell me more about this event. Maybe some article on the internet, because I cant find anything about it.
I am 2 hours in this course and I love it, thank you so much you're a great teacher
These guys created an army ❤
FCC, Thanks for adding latest Golang course.
Pls in future try to add Golang for DevOps and Kubernetes Automation and Backend,
as Golang used in such areas
👍👍
Glad this course is helpful! (author here) I actually do plan on releasing more devops related content in the near future, so stay tuned
@@bootdotdev Nice tutorial bro. Please microservice application in GO with docker and k8s
@@aboronilov We have this over on Boot.dev if you wanna check that our. Learn Web Servers course + Docker course
++
@@bootdotdev are you going to make a video?
A crash course with the new router introduced from 1.22 would be great. Thanks for all the content!
Thank you for this extensive course!
I'm a Senior Java developer, who might now end up in a new role where they need a Go developer.
Having absolutely no experience with Go, this helped me out A LOT!
Fortunately, I've touched C/C++ programming before, and that might have helped me understand the "lack of OOP", Pointers etc. But from a Senior Java dev perspective, this is a really good start that gave me a good insight into what I have to focus on to become a good Go developer!
So.. Thank you for providing this to us for free! It's greatly appreciated!
I think that is the most preferred and well assertive way to learn a program language. Well done!
One of the most useful golang videos I've ever seen on youtube! Great content
Bro on where to run this go lang
The timestamp of (Ch 15. Generics) should start at 06:18:18 , but not 06:30:56
This course was an amazing intro to Go. Looking forward to building more projects with it.
what do you mean by intro?
@@clorets4509 I’ve never used go before so it was nice to have an introduction to the language that was so simple to understand
@@clorets4509introduction
Finally a course seems to be relied on. I have been looking for such tutorials to learn this language with a proper tutorial. I read somewhere that this language bridges the gap between java and C++ so it makes things pretty easy to learn. Thanks for the course @bootdotdev
Thank you Lane! I would like to say that you are a wonderful teacher with a sense of humour and really good at explaining concepts in a simple manner. I really enjoyed this course and I can proudly say I'm a gopher now!
great job! very comprehensive and good with chapters marked to be able to fast forward and get back to the material as needed
A well made tutorial. A great attitude by the tutor. A very interesting project. Thanks a lot. I look forward to working more with the Go programming language in the future.
Wow! No way! I was just thinking as I woke this morning getting ready to finish one of my programs that free code camp needs to make another Golang course!!!! What the heckkkkkk ❤❤❤❤❤❤
vey good course. the go channels and routins was a little difficult to grasp but in total one of the best go tutorials. Thanks
This is so awesome , you have put in so much efforts for building this course and you very clear in what you say in the video, loving it. thanks.
It took me 3 hours to complete 40 min
Thank you Freecodecamp you guys are awesome.
🎯 Key Takeaways for quick navigation:
00:00 🎓 This is a comprehensive Go programming course for beginners, covering key concepts and techniques for writing performant, idiomatic Go code.
00:41 🚀 Go has been rapidly growing in popularity due to its speed, lightweight nature, excellent developer experience, and ease of learning.
06:39 👨💻 The course involves hands-on coding challenges to build a production-ready back-end server in Go.
22:21 🔄 Performance is measured in both execution speed (CPU cycles) and memory consumption (RAM usage) to assess a programming language or application's efficiency.
25:47 📊 Go exhibits better memory efficiency compared to Java and is more memory-efficient than Rust as well. In an experiment measuring memory consumption, Go used 100 times less memory than Java when idle.
27:55 🔢 Go has various numeric types, including integers (int and uint), floats (float32 and float64), and complex numbers. The size of a type, like float64, indicates it has 64 bits.
33:25 🔢 If you need to work with fractions or floating-point numbers, use `float64` rather than `int` to store values with fractional parts accurately.
35:21 🏋️♀️ If performance is a primary concern and you need to optimize memory usage, consider using specific types like `int8`, `int16`, etc. Otherwise, stick to the default types for better readability and maintainability.
37:11 ❓ You should not use a default type when a specific size will work, and performance and memory are critical factors.
40:25 🛠️ Constants in Go are immutable values known or computed at compile time. Constants can be used for calculations, but their values must be determined at the time of compilation.
49:02 📉 When initializing a variable in an `if` block, it limits the scope of that variable to only be accessible within that block.
51:05 📝 Functions in Go break up code into individual units that are easier to reason about, and their signatures describe their inputs and outputs.
52:26 🔄 Go passes variables by value, not by reference, and it does not allow unused variables.
01:09:10 🧹 Using named return values to improve code readability and document the purpose of return values in functions.
01:34:39 🛠️ Interfaces in Go are collections of method signatures that enable polymorphism, allowing different types to be treated as the same interface if they implement the methods.
01:35:59 🎈 Multiple types can implement the same interface, allowing for flexible and extensible design in Go programs.
02:00:10 📛 Understand that interfaces in Go are not classes and do not define underlying behavior or hierarchies like traditional object-oriented classes.
02:00:50 🧪 Go's error handling is unique and does not use try-catch blocks like JavaScript or other languages.
02:04:29 🔎 Go's error handling using interfaces allows developers to create custom error types and provide more structured information about the error, improving error handling and debugging capabilities.
02:24:57 🤖 The speaker discusses a function that calculates the cost of sending text messages based on a given formula.
02:26:54 🤖 The speaker creates a function `maxMessages` to find the maximum number of messages to send under a cost threshold using a specific formula.
02:29:31 🤖 Go does not have a dedicated `while` loop; instead, a `for` loop with only a condition serves as a `while` loop in Go.
02:30:53 🤖 The assignment involves writing a function that calculates the number of messages that can be sent based on a cost multiplier and a maximum cost.
02:38:18 🤖 The assignment focuses on implementing the classic FizzBuzz game, printing numbers with specific substitutions for multiples of three and five.
02:51:09 🔄 Slices in Go provide a flexible view into an array and are typically used instead of arrays, as they can dynamically grow and are more developer-friendly.
02:52:14 💻 The assignment involves implementing a function to handle different plans for text message retries, where Pro users get unlimited retries and free users get limited retries.
03:03:47 ⚠️ Slices dynamically expand by copying data into a new memory location when reaching capacity. Pre-allocating slices can enhance performance by minimizing copying.
03:08:24 📊 The assignment involves implementing a function to calculate costs based on message lengths and store them in a slice of float64.
03:10:08 📏 Understanding the difference between "length" (current size of a slice) and "capacity" (maximum size before reallocation) is essential when working with slices in Go.
03:19:47 🔄 Use the `for range` loop syntax to iterate over elements in a slice easily.
[03:40:30 URL] 🗺️ Maps can be declared upfront using a colon syntax for keys and values, providing a more efficient way to set key-value pairs in a map.
[03:41:12 URL] ⚙️ Using maps can speed up data lookups significantly compared to searching through a slice, making code more efficient.
[03:41:40 URL] 🖋️ Creating a map of name to user structs can be achieved by looping through two slices, matching the names to phone numbers and adding them to the map.
[03:42:52 URL] 🔍 When using maps as keys, the type must be comparable (strings, booleans, numbers), and not slices, maps, or functions.
[03:50:41 URL] 🚫 Maps cannot have duplicate keys; they are unique and can have at most one value associated with each key.
04:03:47 📝 Understanding nested maps and how to initialize them in Go.
04:06:29 📝 Explaining first-class and higher-order functions in Go.
04:13:08 📝 Understanding closures and how they reference variables in Go.
04:14:11 📝 Utilizing defer keyword for cleanup and resource management in Go.
04:52:32 📦 Packages in Go are organized at the directory level, and packages live on GitHub repositories.
05:01:38 🔗 Import paths in Go serve as a prefix for nested packages within the module.
05:08:03 🏃♂️ Use "go run" to quickly run small scripts or programs without producing a compiled binary.
05:11:44 📥 "Go install" compiles and installs the program globally, making it accessible from anywhere on your machine.
05:16:48 💡 To export functions in a package, capitalize their first letter in Go.
05:17:56 🏭 The output of "go build" in a library package is not an executable program; it's silently saved to the local build cache for later use.
05:19:21 🗂️ Go package convention: The package name and the directory name should match, but it's not a strict requirement.
05:27:59 📅 Demonstrating synchronous/sequential programming and how it runs one instruction at a time.
05:38:33 🔄 Writing concurrent code in Go using the "go" keyword to spawn new goroutines for parallel execution.
05:39:30 💼 Go routines allow concurrent execution in Go, allowing functions to run in the background.
05:54:38 🤖 Channels should be closed by the sending routine to indicate no more data will be sent.
06:45:14 📝 Project Introduction: Building a backend server in Go to aggregate data from RSS feeds, requiring basic SQL knowledge, a text editor, command line, Go language, and an HTTP client.
06:52:13 📝 When using the package "github.com/joho/go.env" to load environment variables from a .env file, it might not overwrite the current session environment. It's necessary to restart the shell session to see the changes.
06:59:39 📝 CORS (Cross-Origin Resource Sharing) configuration can be added to the router to allow requests to be made from browsers to the server. It involves setting up headers to specify allowed methods, origins, and headers.
07:20:55 📁 Set up SQLC to generate type-safe Go code for SQL queries, reducing manual work and potential errors.
07:40:30 🤖 The choice between VARCHAR and TEXT data types depends on the desired length and characteristics of the data. VARCHAR(64) is used to store unique API keys of a fixed length.
08:02:10 🤖 Middleware functions can take advantage of closures to access variables from the outer scope, allowing them to handle additional logic before calling the original handler function.
08:05:27 🏭 The speaker defines the parameters required to create a feed object and encounters and resolves a bug related to UUID types in the database schema.
08:08:22 🔨 The speaker creates a new model called "feed" to represent the structure of a feed and discusses the benefits of using custom models for JSON API responses.
08:10:17 🧪 The speaker tests the new "Handler create feed" endpoint using a tool called Thunder Client and successfully creates a new feed.
08:11:17 📝 The speaker implements a new endpoint "Handler get feeds" to retrieve all feeds in the database, providing users with an aggregated view of feeds they are interested in.
08:22:02 💻 The speaker implements the "Handler create feed follow" endpoint, allowing users to follow specific feeds.
08:35 📌 The Chi router in Go (Golang) can grab dynamic values from the request path using the `URLParam` function.
08:39 📌 The server has completed the CRUD section of the API, but it still needs to implement the part that fetches posts from different RSS feeds and updates the database accordingly.
08:54 📌 The server implements a background scraper function to fetch RSS feeds concurrently using goroutines and a ticker. It fetches multiple feeds simultaneously to improve efficiency.
09:04:04 📝 With a concurrency setting of 10, multiple feeds can be fetched simultaneously, but duplicates should be avoided when saving posts to the database.
Made with HARPA AI
Thank you very much for providing this premium course for free
I'm so glad to learn electronics and binary before ever learning how to code long ago. For me, it's easier to understand what the code is doing by learning how to understand what binary actually is on the CPU.
Ty for this course really helped me to learn go in better way and also as software engineer in Java I'm connecting dots easier and upgrading m self for Go back operations also.
Grateful for this video, can't wait to get hands on with it.
only watched half of it and I think it's a great course! definitely learned somethings other than just go
thank you Lane! The course was very helpful to learn Go.
But honestly, the project seems to be totally another level, not suitable for beginners. It was very hard to follow, and I had to follow it step by step, copying every character, because I wasn't even sure what does what. Any typo would make me rewatch the video, trying to find the mistake. Probably it would be better to start with easier stuff.
Anyway, it was very useful. Now I hope that I can understand everything what was done, how it works, and how to use it in my future projects.
Launch a 15 hrs rust course + 3 projects please ❤
My exact thoughts
Hello, thank you for the fantastic course, very exciting. I've noticed, that probably, you have misinterpret 'function signature' and confused it with the 'function declaration', since signature usually contains only the function name and list of parameters.
YOU DAMN LEGENDS, HOW SHOULD I KEEP UP WITH MY COURSES WHEN YOU ALWAYS UPLOAD THOSE AMAZING VIDEOS?
Savages!
P.S. Thank GOD you exist!
Дякую.
Я фанат цієї мови програмування.
This is such a great introduction to Go 👍 Amazing job!
Thanks for all the courses, I think it's necessary to make a complete Rust lang course (+20hrs), that would be awesome 😮
I watched so many tutorials. this one is by far the best
4:18:44 The defer keyword is also used in javascript. If you want to load the javascript file after the html and css been downloaded, then you use defer keyword.
Nice course to quickly ramp up on Go basics and advance really thanks you so much
The compiler converts the source code into assembly later it's converted into machine code by assembler.
This code is then linked with library files using a linker that results in exe file.
Good course, bought a 1-year subscription.
This is the best golang course. Amazing work. 🔥
Thanks for the course, I found it useful to know sqlc and it's a clearer alternative to GORM, just for the section of authentication, the authedMiddleware section, it's not considered a middleware it's a wrapper pattern, which caused me trouble when crossed referenced with Chi examples and documentation, thanks again for the effort and sharing your knowledge.
Thank you so much for creating this course Lane 💯
03:57:18 - The ids are not randow, they are the hash of the numbers from 1 to 1_000
50 thumbs up for this awesome course! Thanks!
I've just started to learn golang and I saw this video
Thank you for all the effort. The quality rapidly decreased after about 8:47:00 (P.6) as the presentation started to loose structure and missed several critical explanations, with lots of rapid scrolls and mistakes and redos.
Enjoyed the course, A very good way to start my Go journey
Whole numbers cannot be negative🎉🎉🎉❤❤
i can finally add 'golang developer' to my resume
You explain it so well! Thank you very much for the clear and comprehensive tutorial
Go seems to ba a must these days for typescirpt proffesionals. Learning curve is quite easy.
Typescript people love express ... Making everything slowwwwwwwwwww
Thank you. Just what I needed this week.
Thanks a lot. This course is well structured and well explained.
Correction on the intro: c# is not running on a VM its Just In Time Compilation, its still compiled but any dynamic code from . NET is interpreted once and then ran from cache.
If you took an hour to compile a java app is because you compiled the whole app, which is not the default. Each class can be compiled by it self, most ide for java compile the file you are working on in the background to highlight errors. Fast compile is cool, but is not a reason to choose a language for.
In Chapter 8 with Append function, I don't think your solution would satisfy this requirement: "include a "bucket" for days without any costs". We didn't get to see the result for the second test.
Thank you so much, very detailed tutorial.😃
After the Elixir video, this one comes out. Nice!
let's start and finish, shall we?🚀🚀
Did you finish ??
Fantastic course, thanks for sharing.
Finally, an updated GO course!
This isn’t exactly an updated go course, it’s a 9 hour advertisement.
better than all the paid courses👍
Could you also add a portion to this tutorial on how to setup go in your local environment? Like in vscode.
We also can use print() or println() and don't use import "fmt"
Has a heavy frontend dev of many years.
Very nice Go course to dive generally into the ecosystem and get comfortable with the syntax (chi/goose/sqlc) + typing if err != nil over and over...which goes against my nature as a JS dev who never handles their errors lol.
For those having issues with installing sqlc, make sure your go version is
Thanks, v1.20.0 works.
thanks. Also the name of the package is wrong.
Best Go tutorial 💖💖💖💖, I wish I can donate to help this Tutor make more of the tutorial 🌝
Thats an amazing course! Thank you very much :)
2:03:06 at this time he is saying that it won't work, however he is using const and not var, clearly he is a Go developer, you could use var in the try catch block and it will give us the user in the second try catch and we won't have to do nesting, JS isn't as bad as people make it, secondly the example is bad, why would you try to fetch the profile of the user if getUser has already failed? you don't have to user id so the getUserProfile will fail as well, in this case it makes more sense to just use getUser and getUserProfile in the same try catch block
just completed the course, thank you
Excellent content! Thanks for sharing your knowledge and help other people to level up their skills =D
Chapter3, lesson 12: "When I started writing more JavaScript, I was disappointed to see how many nested conditionals existed in the code I was working on."
What do you mean by that? You can write the exactly the same code in javascript. Its not some magic that is done by GO, lol.
What am i missing ?
Question for you .
What is the best computer for coding from point of view?
Any computer basically. Even a raspberry pi can be used if you want. You don't need anything super fancy and powerful to be able to code.
Potato
Preferably one with a keyboard.
Preferably a one which boots up
It's so helpful chanel for beginners
Great course - thank you so much!
This is an amazing course, Loved it!
Awesome course. Thanks for your work.
much respect. this is an excellent course.
Great course for the beginners
Awesome material! Thank you guys a lot!
Yeehaw! Thanks so much! Exactly what I need right now.
Hey Awesome Tutorial! I had a doubt that which one would you recommend Fiber v3 or Chi v5. Out of them which one would be better for creating projects overall?
Two things that I absolutely hate about the language - the capital letters to denote an exported function, and the formatter imposing tabs over spaces. The former I can deal with, but they should have used a keyword to make it explicit. The latter is why I chose Rust for my latest project. Go is still a great language, but the tabs used by the formatter was a deal breaker for me. I like freedom of choice over an autocracy.
1:15 Guard Type Code Branching is easy to Testable.
Thanks for sharing this great course
Want a full course on Quality analyst from beginning to advanced with python automation testing