Go Google کی بنائی ہوئی ایک کمپائلڈ پروگرامنگ زبان ہے، جو 2009 میں Robert Griesemer، Rob Pike اور Ken Thompson نے بنائی۔ Go سادہ نحو کو C سطح کی کارکردگی کے ساتھ جوڑتی ہے۔ موبائل ڈویلپمنٹ میں، Go سرور سائڈ، مائیکرو سروسز، API گیٹ ویز اور CLI افادیتی پروگراموں کے لیے استعمال ہوتی ہے۔ Stack Overflow Survey (2025) کے مطابق، Go سب سے زیادہ تنخواہ والی دس پروگرامنگ زبانوں میں شامل ہے۔
اہم نکات
Go ایک جامد طور پر ٹائپ کی گئی کمپائلڈ زبان ہے جس میں کچرا جمع کرنے کے ذریعے خودکار میموری کا انتظام ہے۔ Go کے اہم مقاصد: تیز کمپائلیشن، کوڈ کی سادگی اور بلٹ ان ہم وقتی معاونت۔ Go بغیر ورچوئل مشین کے مقامی بائنری میں کمپائل ہوتی ہے — ایک قابل عمل فائل میں انحصار سمیت سب کچھ ہوتا ہے۔
Go کی معیاری لائبریری HTTP سرور، JSON مارشلنگ، کمانڈ لائن پرچم تجزیہ، خفیہ کاری اور ڈیٹابیس آپریشنز کو کور کرتی ہے۔ HTTP سرور کے لیے کسی بیرونی فریم ورک کی ضرورت نہیں — net/http بلٹ ان ہے۔ Go Modules (v1.16 سے) معیاری انحصار کے انتظام کا نظام ہے۔ موجودہ ورژن Go 1.23 (2025) ہے جس میں تکرار کاروں کے لیے بہتر iter پیکیج ہے۔
Go کو Google کے پیمانے کے مسائل حل کرنے کے لیے ڈیزائن کیا گیا تھا: سست C++ کمپائلیشن، Java کی پیچیدگی، ناکارہ Python ہم وقتی۔ نتیجہ ایک زبان ہے جو Docker، Kubernetes، Prometheus، Terraform اور Hugo کو چلاتی ہے۔
Go کم سے کم ہے: 25 کلیدی الفاظ (C++ میں 84 کے مقابلے میں۔) کوئی کلاسز، وراثت، جنریکس (v1.18 تک)، آپریٹر اوور لوڈنگ یا مستثنیات نہیں۔ خرابیاں err واپسی کے ذریعے واضح طور پر سنبھالی جاتی ہیں۔ ڈھانچے اور انٹرفیس OOP کی جگہ لیتے ہیں۔
package main
import (
"encoding/json"
"fmt"
"net/http"
)
type User struct {
ID int `json:"id"`
Name string `json:"name"`
Email string `json:"email"`
}
func userHandler(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
user := User{ID: 1, Name: "Alice", Email: "alice@example.com"}
json.NewEncoder(w).Encode(user)
}
func main() {
http.HandleFunc("/api/user", userHandler)
fmt.Println("Server on :8080")
http.ListenAndServe(":8080", nil)
}JSON ٹیگز والا User ڈھانچہ سیریلائزیشن کی وضاحت کرتا ہے۔ http.HandleFunc ایک ہینڈلر رجسٹر کرتا ہے۔ json.NewEncoder(w).Encode(user) براہ راست جواب میں ڈھانچے کو JSON میں سیریلائز کرتا ہے۔ بلٹ ان HTTP سرور خود بخود علیحدہ گوروٹین میں درخواستوں کو سنبھالتا ہے۔
Goroutines Go رن ٹائم کے زیر انتظام ہلکے عملدرآمد کے دھاگے ہیں۔ OS دھاگوں (1–8 MB اسٹیک) کے برعکس، گوروٹین 4 KB اسٹیک سے شروع ہوتی ہے جو متحرک طور پر بڑھتا ہے۔ ایک سرور پر 100,000 گوروٹین چلائی جا سکتی ہیں۔ گوروٹین شروع کرنا — go functionName()۔
چینلز (channels) گوروٹین کے درمیان ڈیٹا منتقل کرنے کے لیے ٹائپ شدہ قطاریں ہیں۔ چینل make(chan Type) کے ذریعے بنایا جاتا ہے۔ <- آپریٹر ڈیٹا بھیجتا ہے، <-chan وصول کرتا ہے۔ چینلز بفر شدہ (صلاحیت کے ساتھ) یا غیر بفر شدہ (ہم وقت) ہو سکتے ہیں۔
package main
import (
"fmt"
"net/http"
"time"
)
func fetchURL(url string, ch chan<- string) {
start := time.Now()
resp, err := http.Get(url)
if err != nil {
ch <- fmt.Sprintf("Error: %s", err)
return
}
defer resp.Body.Close()
elapsed := time.Since(start)
ch <- fmt.Sprintf("%s — %dms", url, elapsed.Milliseconds())
}
func main() {
urls := []string{"https://google.com", "https://github.com", "https://stackoverflow.com"}
ch := make(chan string, len(urls))
for _, url := range urls {
go fetchURL(url, ch)
}
for range urls {
fmt.Println(<-ch)
}
}تین درخواستیں go fetchURL کے ذریعے بیک وقت عمل میں آتی ہیں۔ ch چینل نتائج جمع کرتا ہے۔ defer resp.Body.Close() فنکشن سے واپسی پر جواب کی بندش کو یقینی بناتا ہے۔ select {} استعمال نہیں کیا جاتا کیونکہ تمام گوروٹین چینل میں بھیجتی ہیں — مرکزی گوروٹین بالکل len(urls) بار پڑھتی ہے۔
Go موبائل ایپ بیک اینڈ کے لیے بہترین زبانوں میں سے ایک ہے۔ بلٹ ان HTTP/2 اور HTTP/3، تیز protobuf/gRPC سیریلائزیشن اور کم میموری استعمال Go کو ہزاروں موبائل کلائنٹس کی خدمت کرنے والے APIs کے لیے مثالی بناتے ہیں۔
مقبول فریم ورکس: Gin (Express.js سے 10x تک تیز)، Echo (کم سے کم، JWT مڈل ویئر)، Fiber (Express طرز)، Chi (net/http مطابق)۔ Gin سب سے مقبول ہے جس کے GitHub پر 70k+ ستارے ہیں۔ gRPC کے لیے google.golang.org/grpc استعمال ہوتا ہے۔
package main
import (
"database/sql"
"log"
"net/http"
"time"
"github.com/gin-gonic/gin"
_ "github.com/mattn/go-sqlite3"
)
func main() {
db, err := sql.Open("sqlite3", "mobile_app.db")
if err != nil {
log.Fatal(err)
}
defer db.Close()
r := gin.Default()
r.GET("/api/v1/posts", func(c *gin.Context) {
type Post struct {
ID int `json:"id"`
Title string `json:"title"`
CreatedAt time.Time `json:"created_at"`
}
rows, _ := db.Query("SELECT id, title, created_at FROM posts ORDER BY created_at DESC LIMIT 20")
defer rows.Close()
var posts []Post
for rows.Next() {
var p Post
rows.Scan(&p.ID, &p.Title, &p.CreatedAt)
posts = append(posts, p)
}
c.JSON(http.StatusOK, posts)
})
r.Run(":8080")
}Gin.GET ہینڈلر کے ساتھ راستہ رجسٹر کرتا ہے۔ sql.Open SQLite ڈیٹابیس کھولتا ہے، db.Query استفسار چلاتا ہے۔ c.JSON posts سلائس کو JSON صف میں سیریلائز کرتا ہے۔ GET کے اندر گمنام فنکشن بیرونی سیاق سے db کو حاصل کرتا ہے۔ Gin گھبراہٹ کو سنبھالتا ہے، درخواستوں کو لاگ کرتا ہے اور مڈل ویئر کو سپورٹ کرتا ہے۔
Go مائیکرو سروس فن تعمیر کے لیے بنیادی زبان ہے۔ فی مائیکرو سروس کم میموری استعمال (15–30 MB) ایک سرور پر درجنوں خدمات چلانے کی اجازت دیتا ہے۔ تیز آغاز (ملی سیکنڈ) اور چھوٹا بائنری سائز (10–20 MB) کنٹینر میں تعیناتی کو آسان بناتا ہے۔
Go میں API گیٹ وے موبائل ایپ سے اندرونی خدمات تک درخواستوں کو جمع کرتا ہے۔ Go گیٹ وے تصدیق (JWT)، شرح محدود کرنا، راستہ دینا اور کیشنگ سنبھالتا ہے۔ مقبول نفاذ: Kong (Go پلگ ان کے ساتھ OpenResty پر مبنی)، Tyk (Go میں)، Gin پر حسب ضرورت گیٹ ویز۔
gRPC Google کا دور دراز طریقہ کار کال فریم ورک ہے جو سیریلائزیشن کے لیے Protocol Buffers اور نقل و حمل کے لیے HTTP/2 استعمال کرتا ہے۔ تمام زبانوں میں Go کی gRPC معاونت بہترین ہے۔ موبائل بیک اینڈ کے لیے، gRPC REST/JSON سے 5–10 گنا زیادہ تھرو پٹ فراہم کرتا ہے۔
package main
import (
"context"
"log"
"net"
"google.golang.org/grpc"
pb "example.com/proto"
)
type server struct {
pb.UnimplementedUserServiceServer
}
func (s *server) GetUser(ctx context.Context, req *pb.GetUserRequest) (*pb.UserResponse, error) {
return &pb.UserResponse{
Id: req.Id,
Name: "Alice",
Email: "alice@example.com",
}, nil
}
func main() {
lis, _ := net.Listen("tcp", ":50051")
s := grpc.NewServer()
pb.RegisterUserServiceServer(s, &server{})
log.Fatal(s.Serve(lis))
}pb.UnimplementedUserServiceServer .proto فائل سے protoc کا تیار کردہ سٹب ہے۔ server ڈھانچہ GetUser طریقہ کو اوور رائڈ کرتا ہے۔ grpc.NewServer() لاگنگ، تصدیق اور میٹرکس کے لیے انٹرسیپٹرز کے ساتھ سرور بناتا ہے۔
Go موبائل ڈویلپمنٹ میں استعمال ہونے والے CLI افادیتی پروگراموں کے لیے بہترین زبان ہے۔ بغیر انحصار کے ایک جامد بائنری (~10 MB) تمام پلیٹ فارمز پر چلتی ہے: macOS، Linux، Windows۔ کمپائلیشن سیکنڈ لیتی ہے۔ Go افادیتی پروگراموں کو انٹرپریٹر یا رن ٹائم انسٹالیشن کی ضرورت نہیں۔
موبائل ماحولیاتی نظام میں Go ٹولز کی مثالیں: Migrate (ڈیٹابیس منتقلی)، Kubectl (موبائل بیک اینڈ کے لیے Kubernetes)، Terraform (بنیادی ڈھانچہ)، Prometheus (نگرانی)۔ ڈویلپرز پروٹو فائلوں سے ماڈل تیار کرنے، ترتیبات کی توثیق کرنے اور مائیکرو سروسز تعینات کرنے کے لیے Go افادیتی پروگرام لکھتے ہیں۔
package main
import (
"flag"
"fmt"
"os"
)
func main() {
project := flag.String("project", "", "Project directory")
version := flag.String("version", "1.0.0", "App version")
verbose := flag.Bool("verbose", false, "Verbose output")
flag.Parse()
if *project == "" {
fmt.Println("Usage: deploy --project=path [--version=x.x.x]")
os.Exit(1)
}
if *verbose {
fmt.Printf("Deploying project %s version %s\n", *project, *version)
}
// یہاں تعیناتی کی منطق
fmt.Println("Deploy complete")
}flag.String نام، ڈیفالٹ ویلیو اور وضاحت کے ساتھ ایک سٹرنگ کمانڈ لائن پرچم بیان کرتا ہے۔ flag.Parse() os.Args کے آرگیومنٹس کو پارس کرتا ہے۔ پوائنٹر *project ویلیوز حاصل کرنے کے لیے ڈی ریفرنس کیے جاتے ہیں۔ بائنری go build -o deploy deploy.go کمانڈ سے بنتی ہے۔
Gomobile Go کوڈ کو مقامی موبائل لائبریریوں میں کمپائل کرنے کا Google ٹول ہے۔ go bind -target=android Android کے لیے .aar بناتا ہے، go bind -target=ios iOS کے لیے .xcframework بناتا ہے۔ یہ مشترکہ کاروباری منطق Go میں لکھنے اور اسے Kotlin اور Swift سے کال کرنے کی اجازت دیتا ہے۔
Gomobile کے اہم استعمالات: خفیہ نگاری (حسب ضرورت خفیہ کاری کے منصوبے)، نیٹ ورکنگ (حسب ضرورت WebSocket پروٹوکول)، ڈیٹا پروسیسنگ (کمپریشن، انکوڈنگ، پارسنگ)۔ یوزر انٹرفیس Go میں نہیں لکھا جاتا — اس کا مقصد کراس پلیٹ فارم مقامی ماڈیولز کے لیے C++ کو تبدیل کرنا ہے۔
package mobile
import "crypto/aes"
// EncryptData AES-256-GCM سے ڈیٹا خفیہ کرتا ہے (.aar میں برآمد)
func EncryptData(key []byte, plaintext []byte) ([]byte, error) {
block, err := aes.NewCipher(key)
if err != nil {
return nil, err
}
ciphertext := make([]byte, len(plaintext))
block.Encrypt(ciphertext, plaintext)
return ciphertext, nil
}
func DecryptData(key []byte, ciphertext []byte) ([]byte, error) {
block, err := aes.NewCipher(key)
if err != nil {
return nil, err
}
plaintext := make([]byte, len(ciphertext))
block.Decrypt(plaintext, ciphertext)
return plaintext, nil
}برآمد شدہ فنکشنز (بڑے حروف) Gomobile کے ذریعے Java/Swift انٹرفیس میں لپیٹے جاتے ہیں۔ Kotlin سے، کال Mobile.encryptData(key, plaintext) کی طرح دکھائی دیتی ہے۔ Gomobile خود بخود ٹائپس تبدیل کرتا ہے: []byte → byte[] (Java) / Data (Swift)۔
| کمانڈ | نتیجہ | پلیٹ فارم |
|---|---|---|
| gomobile bind -target=android | .aar لائبریری | Android |
| gomobile bind -target=ios | .xcframework | iOS |
| gomobile build -target=android | Go سرگرمی کے ساتھ .apk | Android |
Go سرور ڈویلپمنٹ میں Java اور Kotlin سے مقابلہ کرتی ہے۔ کلیدی فرق: Go مقامی بائنری میں کمپائل ہوتی ہے، JVM کی ضرورت نہیں، 2–3 گنا کم میموری استعمال کرتی ہے اور ملی سیکنڈ میں شروع ہوتی ہے۔ Java ماحولیاتی نظام کی پختگی اور لائبریریوں کی تعداد میں آگے ہے۔
| معیار | Go | Java / Kotlin |
|---|---|---|
| کمپائلیشن | مقامی بائنری (~10 MB) | JVM بائٹ کوڈ + JIT |
| شروع | 1–5 ملی سیکنڈ | 1–5 سیکنڈ (JVM شروع) |
| RAM استعمال | 15–30 MB فی سروس | 50–200 MB فی سروس |
| ہم وقتی | Goroutines (بلٹ ان) | کوروٹینز / RxJava |
| ماحولیاتی نظام | بڑھتا ہوا، 100k+ ذخیرے | پختہ، لاکھوں لائبریریاں |
| سیکھنا | 2–4 ہفتے | 6–12 ماہ (Java) |
Go مائیکرو سروسز، API گیٹ ویز اور ٹولز کے لیے چنا جاتا ہے۔ Java/Kotlin — بھرپور کاروباری منطق والی انٹرپرائز ایپلی کیشنز کے لیے۔ موبائل ڈویلپمنٹ میں، بہترین امتزاج: بیک اینڈ کے لیے Go، کلائنٹ کے لیے Kotlin/Swift۔
اکثر پوچھے گئے سوالات
Go بغیر JVM کے ایک جامد بائنری میں کمپائل ہوتی ہے، کم میموری استعمال کرتی ہے اور تیز شروع ہوتی ہے۔ گوروٹین کے ذریعے غیر مطابقت RxJava یا Kotlin کوروٹینز سے آسان ہے۔ مائیکرو سروسز کے لیے، Go کو اس کی سادگی اور کارکردگی کے لیے چنا جاتا ہے۔
سب سے مقبول: Gin (اعلیٰ کارکردگی)، Echo (کم سے کم)، Fiber (Express.js طرز)، Chi (ہلکا اور مطابق)۔ ریئل ٹائم کے لیے WebSocket Gorilla یا Melody استعمال ہوتا ہے۔ gRPC کے لیے — google.golang.org/grpc۔
ہاں، Gomobile کے ذریعے Go کو .aar (Android) اور .xcframework (iOS) میں کمپائل کیا جا سکتا ہے۔ تاہم، یوزر انٹرفیس Go میں نہیں لکھا جاتا — محدود ماحولیاتی نظام کی وجہ سے عملی نہیں ہے۔ Go مقامی لائبریریوں، خفیہ نگاری اور نیٹ ورکنگ کے لیے موثر ہے۔
ہاں، Go زیادہ بوجھ والے نظاموں کے لیے ڈیزائن کی گئی تھی۔ Cloudflare، Uber، Twitch، Dropbox جیسی کمپنیاں پروڈکشن میں Go استعمال کرتی ہیں۔ بلٹ ان گوروٹین شیڈیولر ایک سرور پر لاکھوں بیک وقت کاموں کو سنبھالتا ہے۔
Go Java سے آسان ہے — اس میں کلاسز، وراثت یا مستثنیات نہیں ہیں۔ نحو کم سے کم ہے، ڈھانچے اور انٹرفیس OOP کی جگہ لیتے ہیں۔ زیادہ تر ڈویلپرز 2–4 ہفتوں میں Go سیکھ لیتے ہیں۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔