ইন্টারেক্টিভ কোর্স
কোর্সে যান
স্ক্র্যাচ থেকে Go শিখুন, ইংরেজিতে। বাস্তব কম্পাইলারে আপনার কোড চালানোর জন্য অফিসিয়াল গো প্লেগ্রাউন্ডে স্ট্যাটিক বৈধতা এবং সরাসরি লিঙ্ক সহ অনুশীলন।
কীওয়ার্ডের মাধ্যমে স্ট্যাটিক ভেরিফিকেশন + অফিসিয়ালে এক্সিকিউশনGo Playground(কপি কোডের জন্য এক ক্লিক + খুলুন)।
01 · মডিউল 1 — ভাষার মৌলিক বিষয়
ভিত্তি: প্যাকেজ, ভেরিয়েবল, প্রকার, ধ্রুবক, অপারেটর, এবং fmt প্যাকেজের সাথে ইনপুট/আউটপুট।
- 1.1ভেরিয়েবল এবং প্রকারvar, সংক্ষিপ্ত ঘোষণা `:=`, মৌলিক প্রকার (int, float64, string, bool), এবং স্ট্যাটিক টাইপিংয়ের ধারণা।~10 min
- 1.2শূন্য মান এবং টাইপ রূপান্তরপ্রতিটি ভেরিয়েবলের একটি ডিফল্ট মান আছে; রূপান্তরগুলি স্পষ্ট (`int(x)`, `স্ট্রিং(b)`)।~10 min
- 1.3ধ্রুবক এবং iotaপঠনযোগ্য গণনা তৈরি করার জন্য `const`, টাইপ না করা ধ্রুবক, এবং `iota` প্যাটার্ন।~10 min
- 1.4অপারেটরপাটিগণিত, তুলনা, যৌক্তিক, এবং বিটওয়াইজ; অন্যান্য ভাষার থেকে অগ্রাধিকার এবং পার্থক্য।~8 min
- 1.5fmt সহ ইনপুট/আউটপুট`fmt.Println`, `fmt.Printf`, ফরম্যাট ক্রিয়া (`%d`, `%s`, `%v`, `%T`) এবং কখন একটিকে অন্যের চেয়ে পছন্দ করতে হবে।~10 min
02 · মডিউল 2 — নিয়ন্ত্রণ প্রবাহ
সিদ্ধান্ত এবং পুনরাবৃত্তি: init বিবৃতি সহ, একক `ফর`, ইডিওম্যাটিক সুইচ, এবং স্পষ্ট ত্রুটি পরিচালনা।
- 2.1if, else, এবং init স্টেটমেন্ট`যদি v := f(); v > 0 { ... }` ফর্ম এবং কেন Go-এর কোনো ত্রিদেশীয় অপারেটর নেই।~10 min
- 2.2জন্য: একমাত্র লুপ`for` এর তিনটি রূপ: তিন-ধারা, একক-শর্ত (= while), এবং অসীম; `ব্রেক` এবং `কন্টিনিউ` ব্যবহার করে।~10 min
- 2.3জন্য...পরিসীমাস্লাইস, মানচিত্র এবং স্ট্রিংগুলির উপর পুনরাবৃত্তি করুন; প্রত্যাবর্তিত মান হল একটি অনুলিপি, কখন `_` দিয়ে সূচক বা মান উপেক্ষা করতে হবে।~10 min
- 2.4ইডিওম্যাটিক সুইচকোন অন্তর্নিহিত ফলথ্রু, ক্ষেত্রে জটিল অভিব্যক্তি, যদি একটি শৃঙ্খল হিসাবে একটি শর্ত ছাড়া সুইচ.~10 min
- 2.5ত্রুটি: `যদি ভুল!= শূন্য` প্যাটার্নত্রুটি মান হয়; মৌলিক প্যাটার্ন `if err != nil { return err }` এবং কেন Go-এর কোনো ব্যতিক্রম নেই।~12 min
03 · মডিউল 3 — ফাংশন
প্রথম শ্রেণীর নাগরিক হিসাবে কাজ করে: স্বাক্ষর, একাধিক রিটার্ন, বৈচিত্র্যময় পরামিতি, ক্লোজার এবং `পিছিয়ে`।
- 3.1স্বাক্ষর এবং পরামিতি`func name(p type) type` সিনট্যাক্স, ডিফল্টভাবে পাস-বাই-মান, একই ধরনের প্যারামিটার একসাথে গোষ্ঠীবদ্ধ।~10 min
- 3.2একাধিক রিটার্ন এবং নাম রিটার্নএকাধিক মান (`মান, ত্রুটি'), নাম দেওয়া রিটার্ন প্যাটার্ন এবং কখন এটি ব্যবহার করবেন না।~12 min
- 3.3বৈচিত্র্যময় ফাংশন`func sum(nums...int) int`, `স্লাইস...` দিয়ে একটি স্লাইস ছড়ানো, stdlib থেকে উদাহরণ।~10 min
- 3.4মান হিসাবে বন্ধ এবং ফাংশনবেনামী ফাংশন যা পার্শ্ববর্তী প্রসঙ্গ থেকে ভেরিয়েবল ক্যাপচার করে; অ্যাডাপ্টার এবং কারখানার নিদর্শন।~12 min
- 3.5`defer`: গ্যারান্টিযুক্ত পরিষ্কারপ্রত্যাবর্তন পর্যন্ত মৃত্যুদন্ড স্থগিত করা; `defer f.Close()` প্যাটার্ন, LIFO অর্ডার, লুপের ভিতরে গোটচাস।~12 min
04 · মডিউল 4 — সংগ্রহ
অ্যারে, স্লাইস (সবচেয়ে গুরুত্বপূর্ণ কাঠামো), মানচিত্র, স্ট্রিংয়ের ভিতরে রুনস এবং সাজানো।
- 4.1স্থির-দৈর্ঘ্যের অ্যারে`[N]T` সিনট্যাক্স, কেন বাস্তব অ্যারে খুব কমই Go-তে ব্যবহার করা হয়, অ্যারে থেকে স্লাইসে রূপান্তর।~8 min
- 4.2স্লাইস: ইডিওম্যাটিক গঠন`make`, `append`, len/cap, `s[a:b]` স্লাইস করা, অন্তর্নিহিত অ্যারে ভাগ করা, এবং কখন কপি করতে হবে।~15 min
- 4.3মানচিত্র: কী এবং মানঘোষণা, কমা-ওকে অ্যাক্সেস (`v, ok := m[k]`), `delete`, non-deterministic পুনরাবৃত্তি।~12 min
- 4.4স্ট্রিং, বাইট, এবং রানসস্ট্রিংগুলি হল UTF-8 বাইট; `পরিসর` রুনস ফলন; `len()` বাইট গণনা করে, অক্ষর নয়।~12 min
- 4.5সাজানোর প্যাকেজ দিয়ে সাজানোতুলনামূলক ফাংশন, স্থায়িত্ব সহ `sort.Ints`, `sort.Strings`, `sort.Slice`।~10 min
05 · মডিউল 5 — কাঠামো এবং পদ্ধতি
যৌগিক ডেটা প্রকার: স্ট্রাকস, মান বা পয়েন্টার রিসিভারের পদ্ধতি, কম্পোজিশন (কোনও উত্তরাধিকার নেই) এবং ট্যাগ।
- 5.1সংজ্ঞায়িত এবং একটি struct ব্যবহার`type Person struct { Name string; বয়স int }`, অবস্থানগত বনাম নামের প্রারম্ভিকতা, বেনামী কাঠামো।~12 min
- 5.2পদ্ধতি: মান বনাম পয়েন্টার রিসিভার`func (p Person) Hello()` বনাম `func (p *Person) Rename(n string)`; কখন এক বা অন্য ব্যবহার করতে হবে।~14 min
- 5.3রচনা (এম্বেডিং)Go এর কোন উত্তরাধিকার নেই: আপনি এক প্রকারের ভিতরে অন্য প্রকার এম্বেড করে রচনা করেন। পদ্ধতি প্রচার।~12 min
- 5.4ফিল্ড ট্যাগ এবং JSON`json:"name,omitempty"`, `এনকোডিং/json` দিয়ে মার্শালিং/আনমার্শালিং, সাধারণ ভুল।~12 min
- 5.5'নতুন...' কনস্ট্রাক্টর প্যাটার্নGo-এর কোনো কনস্ট্রাক্টর নেই: কনভেনশন হল একটি `NewT(...) *T` ফাংশন যা যাচাই করে এবং ত্রুটি প্রদান করে।~10 min
06 · মডিউল 6 — ইন্টারফেস
স্ট্রাকচারাল ইন্টারফেস (কোনও স্পষ্ট ইমপ্লিমেন্ট নেই), দাবী, টাইপ সুইচ এবং স্ট্যান্ডার্ড `স্ট্রিংগার` এবং `এরর` ইন্টারফেস।
- 6.1ইন্টারফেস: একটি আচরণ সংজ্ঞায়িত করাএকটি ইন্টারফেস পদ্ধতির একটি সেট; যে কেউ তাদের প্রয়োগ করে সে স্বয়ংক্রিয়ভাবে এটি সন্তুষ্ট করে (স্ট্যাটিক হাঁস টাইপিং)।~12 min
- 6.2টাইপ দাবী`v, ok := i.(*MyT)`, আতঙ্ক এড়াতে কমা-ওকে ফর্ম, কখন টাইপ সুইচের উপরে একটি দাবিকে প্রাধান্য দিতে হবে।~10 min
- 6.3টাইপ সুইচ`switch v := x.(type) { case int: ... }` রানটাইম টাইপ পাঠাতে।~10 min
- 6.4স্ট্রিংগার ইন্টারফেস`স্ট্রিং() স্ট্রিং` প্রয়োগ করলে `fmt.Println` আপনার প্রকারকে কীভাবে উপস্থাপন করে তা পরিবর্তন করে।~10 min
- 6.5ত্রুটি ইন্টারফেস'ত্রুটি' শুধুমাত্র 'Error() স্ট্রিং'; কাস্টম ত্রুটি তৈরি করা হচ্ছে, `errors.Is`, `errors.As`, `fmt.Errorf("%w", err)`।~14 min
07 · মডিউল 7 — সামঞ্জস্য
Go-এর কনকারেন্সি মডেল: লাইটওয়েট গোরুটিন, যোগাযোগের জন্য চ্যানেল, `নির্বাচন`, সিঙ্ক এবং প্রসঙ্গ।
- 7.1Goroutines: লাইটওয়েট সমান্তরালতা`go f()`, একটি গোরুটিনের খরচ, কেন অপেক্ষা না করে প্রধান প্রস্থান, এবং কিভাবে সিঙ্ক্রোনাইজ করা যায়।~12 min
- 7.2চ্যানেল: টাইপ করা যোগাযোগ`ch := make(chan int)`, `ch <- v`, `v := <-ch`, বাফার বনাম আনবাফার চ্যানেল, বন্ধ।~15 min
- 7.3`নির্বাচন`: মাল্টিপ্লেক্সিং চ্যানেলপ্রথম প্রস্তুত চ্যানেলের জন্য অপেক্ষা করুন, ব্লক করা এড়াতে `ডিফল্ট` কেস, `সময়। পরে` সহ টাইমআউট প্যাটার্ন।~12 min
- 7.4`sync.Mutex` এবং `sync.WaitGroup`যখন চ্যানেলগুলি পর্যাপ্ত না হয়: একটি Mutex এর সাথে ভাগ করা অবস্থাকে রক্ষা করুন, একটি WaitGroup-এর সাথে N গুরুটিনের জন্য অপেক্ষা করুন৷~14 min
- 7.5`context.context`: বাতিলকরণ এবং সময়সীমাগোরুটিন জুড়ে বাতিলকরণ প্রচার করুন, `context.WithTimeout`, `ctx.Done()`, প্রথম-প্যারামিটার প্যাটার্ন।~14 min
08 · মডিউল 8 — অপরিহার্য স্ট্যান্ডার্ড লাইব্রেরি
আপনি প্রতিদিন যে প্যাকেজগুলি ব্যবহার করবেন: fmt, স্ট্রিংস, strconv, io, os, time, encoding/json.
- 8.1উন্নত `fmt``Sprintf`, `Fprintf`, `%+v` এবং `%#v` ক্রিয়া, প্রস্থ এবং নির্ভুল বিন্যাস, `-` এবং `0` পতাকা।~10 min
- 8.2`স্ট্রিংস` এবং `strconv``strings.Contains/Split/Join/TrimSpace`, `strconv.Itoa/Atoi/ParseInt/FormatFloat`।~12 min
- 8.3`io` এবং `os`: ফাইল এবং স্ট্রীম`os.Open/Create/ReadFile/WriteFile`, `io.Reader/Writer` ইন্টারফেস, `defer f.Close()` প্যাটার্ন।~14 min
- 8.4'সময়' প্যাকেজ`time.Now()`, সময়কাল, রেফারেন্স লেআউটের সাথে পার্সিং `2006-01-02 15:04:05`, টাইমার এবং টিকার।~12 min
- 8.5`এনকোডিং/জেসন``json.Marshal/Unmarshal`, struct ট্যাগ, `json.Decoder/Encoder` স্ট্রীম, পার্সিং ত্রুটির জন্য।~14 min
09 · মডিউল 9 — পরীক্ষা, মডিউল এবং টুলিং
`গো টেস্ট` টুল, টেবিল-চালিত পরীক্ষা, বেঞ্চমার্ক, `গো মোড` সহ নির্ভরতা ব্যবস্থাপনা, এবং বিল্ড ট্যাগ।
- 9.1'পরীক্ষা' প্যাকেজ`*_test.go` ফাইল, `TestXxx(t *testing.T)` ফাংশন, `t.Error` বনাম `t.Fatal`, `go test ./...`।~12 min
- 9.2টেবিল চালিত পরীক্ষাইডিওম্যাটিক প্যাটার্ন: ইনপুট এবং প্রত্যাশিত আউটপুট সহ বেনামী স্ট্রাকটের একটি স্লাইস, উপ-পরীক্ষার জন্য `t.Run(নাম, ...)`।~14 min
- 9.3বেঞ্চমার্ক এবং প্রোফাইল`BenchmarkXxx(b *testing.B)` ফাংশন, `i এর জন্য := 0; i < b.N; i++` লুপ, `go test -bench=.`।~12 min
- 9.4মডিউল যান`go mod init`, `go get`, শব্দার্থিক আমদানি সংস্করণ, `go.sum` লকফাইল, `go mod tidy`।~12 min
- 9.5সীমাবদ্ধতা এবং ট্যাগ তৈরি করুনক্রস-প্ল্যাটফর্ম তৈরির জন্য `//go:build...` নির্দেশিকা, পরীক্ষা/ইন্টিগ্রেশন কোড আলাদা করা, বাস্তব-বিশ্বের উদাহরণ।~10 min
10 · মডিউল 10 — ইডিওম্যাটিক অনুশীলন
নামকরণ, উন্নত ত্রুটি পরিচালনা, জেনেরিক (Go 1.18+), এবং দুটি মিনি-প্রকল্প: একটি CLI এবং একটি HTTP সার্ভার।
- 10.1নামকরণের রীতি এবং শৈলীরপ্তানির জন্য PascalCase, স্থানীয়দের জন্য CamelCase, সংক্ষিপ্ত পরিসরে ছোট নাম, `gofmt` আলোচনাযোগ্য নয়।~10 min
- 10.2ইডিওম্যাটিক ত্রুটি হ্যান্ডলিংসেন্টিনেল ত্রুটি (`io.EOF`), `Unwrap` এর সাথে কাস্টম ত্রুটি, `%w` দিয়ে মোড়ানো, কখন `আতঙ্ক` ব্যবহার করতে হবে।~14 min
- 10.3জেনেরিক (1.18+ যান)পরামিতি টাইপ করুন `func Map[T, U any](s []T, f func(T) U) []U`, সীমাবদ্ধতা (`তুলনাযোগ্য`, কাস্টম), ট্রেড-অফ।~15 min
- 10.4মিনি-প্রকল্প: পতাকা সহ একটি CLIআউটপুটের জন্য `পতাকা` প্যাকেজ, কমান্ড এবং সাব-কমান্ড, প্রস্থান কোড, `লগ` বনাম `fmt`।~18 min
- 10.5মিনি-প্রকল্প: একটি HTTP সার্ভার`নেট/http`, ন্যূনতম হ্যান্ডলার এবং রাউটার, ডেকোরেটর হিসাবে মিডলওয়্যার, প্রসঙ্গ সহ সুন্দর শাটডাউন।~18 min