முக்கிய விஷயங்கள்
- Go ஒரு Compiled Language, Google தான் இதை Build பண்ணாங்க, Server-ல Runtime தேவை இல்ல
- go run main.go ன்னு ஒரே Command-ல Code-ஐ Run பண்ணலாம், Separate Compile Step தேவை இல்ல
- go.mod file உங்க Project-க்கான ID Card மாதிரி, Dependencies எல்லாம் அதுல Track ஆகும்
- Slices, Maps தான் Go-ல Everyday Data Tools — List மற்றும் Key-Value Store மாதிரி
- Function ஒரு Value-ஓட Error-யும் சேர்த்தே Return பண்ணும், err != nil Check பண்றது Go-ல ஒரு Ritual
Go அப்படின்னா என்ன, இத்தனை பேருக்கு ஏன் பிடிக்குது?
Go-வை Golang-ன்னும் சொல்லுவாங்க. Google தங்க Scale-ல C++ கொஞ்சம் Headache-ஆ இருந்ததால, இதை Specialஆ Build பண்ணாங்க. இது ஒரு Single Binary-ஆ Compile ஆகும். அதாவது, நீங்க ஒரு File Build பண்ணீங்கன்னா, அதையே Server-ல போட்டா போதும், JVM வேணாம், Node Version Mismatch Drama வேணாம். இதுதான் Backend Teams இத்தனை Love பண்றதுக்கு காரணம். ஒரு Payment System ஆகட்டும், Ride-hailing Backend ஆகட்டும், API Gateway ஆகட்டும் — ஆயிரக்கணக்கான Requests ஒரே நேரத்துல வந்தாலும் Go Smooth-ஆ Handle பண்ணும். Code ஆறு மாசம் கழிச்சும் படிக்க Easy-ஆ இருக்கும்.
Go-வை எப்படி Install பண்ணி முதல் Program Run பண்ணலாம்?
Official Go Website-க்கு போயி, உங்க OS-க்கான Installer-ஐ Download பண்ணுங்க. Install முடிஞ்சதும் Terminal-ல இதை Type பண்ணி Check பண்ணுங்க.
go versionஇப்போ ஒரு Folder உருவாக்குங்க, அதுல main.go ன்னு ஒரு File Create பண்ணுங்க. கீழ Code-ஐ Type பண்ணுங்க.
package main
import "fmt"
func main() {
fmt.Println("Hello, TamilTech!")
}இதை Save பண்ணிட்டு, அதே Folder-ல Terminal Open பண்ணி இந்த Command கொடுங்க.
go run main.goஅவ்வளவுதான். Separate Build Step இல்ல, Makefile இல்ல. go run ஒரே Shot-ல Compile பண்ணி Execute-யும் பண்ணிடும். நீங்க கத்துக்கிற Stage-ல இது Perfect.
Package, Module, go.mod இது எல்லாம் என்ன Story?
ஒவ்வொரு Go File-உம் ஒரு Package Name-ஓட தான் Start ஆகும். package main ன்னா, இந்த File-ஐ நேரடியா Run பண்ணலாம் — அதுக்குள்ள func main() இருக்கணும்.
உங்க Project ஒரு File-க்கு மேல Grow ஆகும்போது, Go-வுக்கு ஒரு Module தேவை. இதை ஒரு Project-க்கு ஒரு தடவை Setup பண்ணணும்.
go mod init github.com/yourname/helloஇது ஒரு go.mod File Create பண்ணும், அது இப்படி இருக்கும்.
module github.com/yourname/hello
go 1.23go.mod-ஐ உங்க Project-ஓட ID Card மாதிரி நினைச்சுக்கோங்க. அப்புறம் go get வைச்சு Third-party Library சேர்த்தா, அதே File-ல அந்த Version Record ஆகும். இதனால உங்க Teammate Laptop-லயும், Server-லயும் ஒரே மாதிரி தான் Build ஆகும் — Node Project-ல package.json எப்படியோ, Go-ல go.mod அப்படி.
Variables, Slices, Maps-ஐ எப்படி Use பண்ணலாம்?
Go Statically Typed Language தான், ஆனா := வைச்சி Type-ஐ Skip பண்ணலாம். அதாவது, Compiler-கிட்ட தானா Figure Out பண்ணச் சொல்லுறீங்க.
package main
import "fmt"
func main() {
name := "Chennai"
var age int = 25
fruits := []string{"mango", "banana"}
fruits = append(fruits, "guava")
scores := map[string]int{"maths": 90, "tamil": 95}
fmt.Println(name, age, fruits, scores)
}Slice அப்படின்னா ஒரு Flexible List மாதிரி. உதாரணமா, fruits-ல Items Add பண்ணிக்கிட்டே போகலாம், Size Fix பண்ண வேணாம்.
Map அப்படின்னா Key-Value Store. GPay-ல உங்க UPI ID ஒரு Key, அதுக்கான Balance ஒரு Value-ன்னு நினைச்சுக்கோங்க — அதே Logic தான் Map-ல Use ஆகுது.
Function-ல Multiple Return Values, Error Handling எப்படி Work ஆகுது?
Go-ல Exceptions இல்ல, Try-Catch இல்ல. இங்க ஒரு Function Value-ஓட Error-யும் சேர்த்தே Return பண்ணும்.
package main
import (
"errors"
"fmt"
)
func divide(a, b int) (int, error) {
if b == 0 {
return 0, errors.New("cannot divide by zero")
}
return a / b, nil
}
func main() {
result, err := divide(10, 2)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println("Result:", result)
}இந்த if err != nil Line-ஐ நீங்க Go Code-ல எங்கு பார்த்தாலும் பார்ப்பீங்க. இது ஒரு Ritual மாதிரி — Error வந்தா உடனே Handle பண்ணிடுங்க, இல்லனா அடுத்த Line-க்கு போங்க.
புதுசா கத்துக்கிறவங்க பண்ற Common Mistakes என்ன?
முதல் Mistake, := -ஐ Function வெளியே Use பண்ண முயற்சி பண்றது. Short Declaration := Function Body-க்குள்ள தான் Work ஆகும், Package Level-ல var தான் Use பண்ணணும்.
இரண்டாவது Mistake, err-ஐ Ignore பண்றது. result, _ := divide(10, 0) ன்னு Error-ஐ Underscore வைச்சி தூக்கி போட்டீங்கன்னா, Production-ல Silent-ஆ Bug வந்து Crash ஆகும்.
மூன்றாவது Mistake, go.mod இல்லாம Project-ஐ Grow பண்ண முயற்சி பண்றது. Library Add பண்ண முடியாம Stuck ஆயிடுவீங்க. go mod init-ஐ Start-லயே பண்ணிடுங்க.
இது Indian Companies, Interview-ல எங்க Use ஆகுது?
Payment Gateway Startups, Fintech Companies, Food Delivery Backends — இதெல்லாம் High Traffic-ஐ Handle பண்றதுக்கு Go-வை தேர்ந்தெடுக்குது, ஏன்னா ஒரே நேரத்துல ஆயிரக்கணக்கான Requests வந்தாலும் Memory, CPU Usage Control-ல இருக்கும்.
Backend Developer Interview-ல Goroutines (Concurrency), Error Handling Pattern, Slice vs Array Difference மாதிரி Questions அடிக்கடி கேக்குறாங்கன்னு Developers Forums-ல Mention பண்றாங்க. Go கத்துக்கிறது Resume-ல ஒரு Strong Skill-ஆ மாறுது.
நீங்க இப்போ என்ன Practice பண்ணணும்?
இந்த Four Programs-ஐ Type பண்ணி go run வைச்சி Run பண்ணி பாருங்க. அப்புறம் ஒரு Small Challenge — ஒரு Function Write பண்ணுங்க, அது ஒரு Slice of Numbers எடுத்துக்கிட்டு, அதுல Negative Number இருந்தா Error Return பண்ணணும், இல்லனா Sum-ஐ Return பண்ணணும்.
இந்த ஒரு Exercise-ல Slices, Functions, Multiple Returns, Error Handling எல்லாம் ஒன்னா Practice ஆகும். இதுதான் Go கத்துக்கிறதுக்கான Real Starting Point.
Go-வை Python, Node.js-ஓட Compare பண்ணா என்ன Difference தெரியுது?
Chennai-ல பல Bootcamp-ல முதல்ல Python அல்லது JavaScript தான் Teach பண்றாங்க, அதனால Beginners-க்கு இந்த Comparison தேவை. Python Easy-ஆ இருக்கும், ஆனா Large Scale-ல Run ஆகும்போது Speed குறையும், அதுக்கு Interpreter தேவைப்படும். Node.js Single Thread-ல Event Loop வைச்சி Work பண்ணும், அது I/O Heavy Apps-க்கு நல்லா இருக்கும், ஆனா CPU Heavy Tasks வந்தா Struggle ஆகும். Go இந்த இரண்டுக்கும் நடுவுல ஒரு Sweet Spot — Compile ஆன Binary, Built-in Concurrency Support, Type Safety எல்லாம் ஒன்னா கிடைக்கும்.
உதாரணமா, ஒரு Food Delivery App-ஓட Order Tracking Service-ஐ எடுத்துக்குங்க. Python-ல அதே Logic Write பண்ணலாம், ஆனா Thousands of Concurrent Orders வரும்போது Server Resources அதிகமா தேவைப்படும். அதே Service Go-ல Write பண்ணினா, Goroutines வைச்சி ஒரே Server-ல அதிக Load-ஐ Manage பண்ணலாம். இதனால Infrastructure Cost குறையும்ன்னு பல Startup Engineering Blogs Mention பண்றாங்க. இதனால தான் New Backend Services Start பண்ணும்போது Teams Go-வை Second Language-ஆ தேர்ந்தெடுக்குறாங்க, First Language-ஆ இல்லாட்டியும்.
ஆனா இதுனா Python, Node.js Useless-ன்னு அர்த்தம் இல்ல. Data Science, Quick Scripts, Frontend-Adjacent Work-க்கு அவை இன்னும் Strong-ஆ தான் இருக்காங்க. Go-ஐ நீங்க Specifically Backend APIs, Microservices, CLI Tools Build பண்றதுக்கு பயன்படுத்தினா, அதுக்கான Return அதிகமா இருக்கும். Right Tool-ஐ Right Job-க்கு பயன்படுத்துறதுதான் Senior Engineer-ஆக வளர்ச்சிக்கான முதல் Step.
ஒரு Chennai Startup Office-ல Go Project எப்படி Day-to-Day Structure ஆகுது?
நீங்க ஒரு Fresh Graduate-ஆ ஒரு Chennai-based Fintech Company-ல Join ஆனீங்கன்னு வையுங்க. முதல் Week-ல உங்களுக்கு ஒரு Existing Go Repository Clone பண்ண சொல்லுவாங்க, அதுல ஏற்கனவே go.mod File இருக்கும், பல Packages Separate Folders-ல Organize பண்ணி இருக்கும். handlers, models, utils மாதிரி Folder Names பார்ப்பீங்க — ஒவ்வொன்னும் ஒரு Specific Responsibility-ஐ தான் கையாளும். இது Monolith-ஆ இருந்தாலும் Code Readable-ஆ இருக்கணும்னு தான் இப்படி Split பண்றாங்க.
Daily Standup-ல ஒரு Senior Developer உங்களுக்கு ஒரு Small Bug Fix Assign பண்ணலாம் — உதாரணமா, ஒரு API Endpoint Error Message சரியா Return பண்ணலைன்னு Report வந்திருக்கும். நீங்க அந்த Function-ஐ Open பண்ணி, if err != nil Block-ஐ பார்த்து, எந்த Condition Miss ஆகுதுன்னு Trace பண்ணணும். இதை Fix பண்ணின பிறகு, Local-ல go run வைச்சி Test பண்ணி, அப்புறம் Pull Request போடுவீங்க. Team Code Review பண்ணி, Error Handling Pattern சரியா இருக்கான்னு Specifically கவனிப்பாங்க, ஏன்னா ஒரு Missed Error Production-ல Silent-ஆ User-க்கு தப்பான Response காட்டிடலாம்.
இந்த Process ஆரம்பத்துல கொஞ்சம் Slow-ஆ தோணும், ஆனா Few Months Cut ஆனதும் இதே Structure உங்களுக்கு Comfort-ஆ மாறிடும். Interview-க்கு போகும்போது, இப்படி ஒரு Real Codebase-ல Work பண்ணிருக்கீங்கன்னு சொன்னா, அது Just Theory கத்துக்கிட்டவங்களுக்கும் உங்களுக்கும் ஒரு Clear Difference Create பண்ணும்.




கருத்துகள் (0)
Be the first to comment!