Gopher Academy pinned «🎯 درود دوستان بنده قصد دارم توی ریپوی زیر از تجربیاتی که دیگران توی مصاحبه گولنگ داشتن رو جمع آوری کنم.🎯 🎯 پس دوستانی که مصاحبه گولنگ داشتن برامون توی ریپوی زیر pull request بزنن تا به اشتراک بزاریم برای سایر افراد ی که وارد این حوزه میشن🎯 🙏🏿❤️🙏🏿 🔗 ht…»
🤔🎯new() vs make()🎯🤔
🔹تابع make یک توابع داخلی است (special built-in function) که برای مقداردهی اولیه Slices ها ، map ها و channel ها استفاده می شود.
🔹توجه داشته باشید که از make فقط می توان برای مقداردهی اولیه Slices ها ، map ها و channel ها استفاده کرد و برخلاف new ، این make اشاره گر را بر نمی گرداند.
➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🔹تابع make یک توابع داخلی است (special built-in function) که برای مقداردهی اولیه Slices ها ، map ها و channel ها استفاده می شود.
🔹توجه داشته باشید که از make فقط می توان برای مقداردهی اولیه Slices ها ، map ها و channel ها استفاده کرد و برخلاف new ، این make اشاره گر را بر نمی گرداند.
➖➖➖➖➖➖➖➖
🔰 @gopher_academy
Gopher Academy
🎯نگاهی عمیق به تایپ های گولنگ🎯 🔹Type Aliases 🔹Basic Types 🔹Strings 🔹Pointers 🔹Pointers 🔹Interfaces 🔹Structs 🔹Type Assertions 🔹Reflection 🔹Functions 🔹Channels 🔹Collections 🔹Arrays 🔹Slices 🔹Maps 🔹Zero Values ➖➖➖➖➖➖➖➖➖ 🔰 @gopher_academy
❌Maps❌
درواقع map ها مجموعه ای از جفت های مقدار-کلید هستند.
🔴کلید نمیتونه هر نوعی باشه
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
درواقع map ها مجموعه ای از جفت های مقدار-کلید هستند.
🔴کلید نمیتونه هر نوعی باشه
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
Gopher Academy
🎯نگاهی عمیق به تایپ های گولنگ🎯 🔹Type Aliases 🔹Basic Types 🔹Strings 🔹Pointers 🔹Pointers 🔹Interfaces 🔹Structs 🔹Type Assertions 🔹Reflection 🔹Functions 🔹Channels 🔹Collections 🔹Arrays 🔹Slices 🔹Maps 🔹Zero Values ➖➖➖➖➖➖➖➖➖ 🔰 @gopher_academy
❌ zero values: ❌
🔹 0 for all integer types,
🔹 0.0 for floating point numbers,
🔹 false for booleans,
🔹 "" for strings,
🔹 nil for interfaces, slices, channels, maps, pointers and functions.
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🔹 0 for all integer types,
🔹 0.0 for floating point numbers,
🔹 false for booleans,
🔹 "" for strings,
🔹 nil for interfaces, slices, channels, maps, pointers and functions.
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🎯ویژگی های شی گرایی در گولنگ 🎯
🔹Struct
🔹Method
🔹Embedding
🔹Encapsulation
🔹Interface
🔹Inheritance
🔹Polymorphism
🔹Conclusion
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🔹Struct
🔹Method
🔹Embedding
🔹Encapsulation
🔹Interface
🔹Inheritance
🔹Polymorphism
🔹Conclusion
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🔴آکادمی علیبابا، در سری برنامههای علیبابا تاک، به بیان چالشها و تجربیات علیباباییها میپردازه. این بار، رضا کمالیفرد، از تیم فنی شرکت سفرهای علیبابا، در مورد سیستم ریت لیمیتر و پیادهسازی اون در علیبابا صحبت میکنه.
🔴علیبابا بزرگترین ارائهدهنده خدمات گردشگری در ایران هست و ای پی آی هایی داره که در اونها اطلاعات مربوط به بلیتهای سفر رو نگه میداره. توی این تاک، داستان دوباره ساختن ملوان زبل،ریت لیمیتر علی بابا، که به جنگ باتها و درخواستهای مخربی که به سمت این ای پی آیها میان، رفته و اونها رو از سر راه برداشته، بیان میشه.
https://m.youtube.com/watch?v=y6y7h8nYDj8
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🔴علیبابا بزرگترین ارائهدهنده خدمات گردشگری در ایران هست و ای پی آی هایی داره که در اونها اطلاعات مربوط به بلیتهای سفر رو نگه میداره. توی این تاک، داستان دوباره ساختن ملوان زبل،ریت لیمیتر علی بابا، که به جنگ باتها و درخواستهای مخربی که به سمت این ای پی آیها میان، رفته و اونها رو از سر راه برداشته، بیان میشه.
https://m.youtube.com/watch?v=y6y7h8nYDj8
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
YouTube
Alibaba Talk: Alibaba Rate-limiter - Reza KamaliFard
آکادمی علیبابا، در سری برنامههای علیبابا تاک، به بیان چالشها و تجربیات علیباباییها میپردازه. این بار، رضا کمالیفرد، از تیم فنی شرکت سفرهای علیبابا...
🔸استخدام Back-end Developer(Go Lang) در شرکت boomerang
🔹تماموقت
🔹ارشد (Senior)
🔗 https://quera.ir/r/G5qHpd
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🔹تماموقت
🔹ارشد (Senior)
🔗 https://quera.ir/r/G5qHpd
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
Clean architecture #نشست دهم در گولنگ
❌محمد صباغ
❌پنجشنبه ۹ بهمن ساعت ۱۹ از
یوتوب:
https://youtu.be/bQepxgcBdTI
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
❌محمد صباغ
❌پنجشنبه ۹ بهمن ساعت ۱۹ از
یوتوب:
https://youtu.be/bQepxgcBdTI
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
Gopher Academy
🎯ویژگی های شی گرایی در گولنگ 🎯 🔹Struct 🔹Method 🔹Embedding 🔹Encapsulation 🔹Interface 🔹Inheritance 🔹Polymorphism 🔹Conclusion ➖➖➖➖➖➖➖➖➖ 🔰 @gopher_academy
❌Structs❌
ساختار یا Structures برای نشان دادن مجموعه ای از فیلد ها به کار میروند
با استفاده از این دستور می توانید مجموعه ای از فیلد های با تایپ مختلف ایجاد کنید
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
ساختار یا Structures برای نشان دادن مجموعه ای از فیلد ها به کار میروند
با استفاده از این دستور می توانید مجموعه ای از فیلد های با تایپ مختلف ایجاد کنید
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
Gopher Academy
🎯ویژگی های شی گرایی در گولنگ 🎯 🔹Struct 🔹Method 🔹Embedding 🔹Encapsulation 🔹Interface 🔹Inheritance 🔹Polymorphism 🔹Conclusion ➖➖➖➖➖➖➖➖➖ 🔰 @gopher_academy
❌Methods❌
در زبان گو توابع می توانند انواع تابپی ها مختلفی رو بگیرین و بسته به نیاز خروجی متفاوتی رو برامون نتیجه بدن
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
در زبان گو توابع می توانند انواع تابپی ها مختلفی رو بگیرین و بسته به نیاز خروجی متفاوتی رو برامون نتیجه بدن
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
❌د GOPATH چیست؟❌
درواقع GOPATH یه متغیر محیطی و یک environment variable است.
در واقع GOPATH مسیر مشخص workspace ما داخل environment variable است.
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
درواقع GOPATH یه متغیر محیطی و یک environment variable است.
در واقع GOPATH مسیر مشخص workspace ما داخل environment variable است.
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
❌مسیر جاری GOPATH کجا است؟❌
go env
اگر go env را داخل command line وارد کنیم و سپس اینتر بزنیم، environment variable های Go را به ما نشان میدهد و از آنجا میتوانیم مسیر جاری GOPATH را مشاهده کنیم.
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
go env
اگر go env را داخل command line وارد کنیم و سپس اینتر بزنیم، environment variable های Go را به ما نشان میدهد و از آنجا میتوانیم مسیر جاری GOPATH را مشاهده کنیم.
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
❌ساختار GOPATH به چه صورت است؟❌
🔹برای نگه داشتن کدهای منبع، دایرکتوری سورس (src) را داریم.
🔹برای نگه داشتن پکیج های آبجکت یا پکیج هایی که اشیاء هستند، دایرکتوری پکیج (pkg) را داریم.(زمانی که کدها را نصب می کنیم، پکیج های اشیاء ( واردات ) بصورت خودکار در دایرکتوری pkg ذخیره می شوند)
🔹برای نگه داشتن کامندهای کامپایل شده و فایل های باینری دایرکتوری باینری (bin) را داریم. (زمانی که کدها را نصب می کنیم، کدها بصورت خودکار در دایرکتوری bin ذخیره می شوند)
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🔹برای نگه داشتن کدهای منبع، دایرکتوری سورس (src) را داریم.
🔹برای نگه داشتن پکیج های آبجکت یا پکیج هایی که اشیاء هستند، دایرکتوری پکیج (pkg) را داریم.(زمانی که کدها را نصب می کنیم، پکیج های اشیاء ( واردات ) بصورت خودکار در دایرکتوری pkg ذخیره می شوند)
🔹برای نگه داشتن کامندهای کامپایل شده و فایل های باینری دایرکتوری باینری (bin) را داریم. (زمانی که کدها را نصب می کنیم، کدها بصورت خودکار در دایرکتوری bin ذخیره می شوند)
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
Gopher Academy
🎯ویژگی های شی گرایی در گولنگ 🎯 🔹Struct 🔹Method 🔹Embedding 🔹Encapsulation 🔹Interface 🔹Inheritance 🔹Polymorphism 🔹Conclusion ➖➖➖➖➖➖➖➖➖ 🔰 @gopher_academy
❌Embedding❌
تعریف یک استراکت در استراکت دیگر
مانند نمونه فوق
نموه ای ااز این حالت هست
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
تعریف یک استراکت در استراکت دیگر
مانند نمونه فوق
نموه ای ااز این حالت هست
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
Gopher Academy
🎯ویژگی های شی گرایی در گولنگ 🎯 🔹Struct 🔹Method 🔹Embedding 🔹Encapsulation 🔹Interface 🔹Inheritance 🔹Polymorphism 🔹Conclusion ➖➖➖➖➖➖➖➖➖ 🔰 @gopher_academy
❌Encapsulation❌
متد ها یا استراکت های که با نام کوچک ایجاد می شوند در همان فایل یا پکیج قابل دسترس هستن در پکبج های دیگر قابل دسترس نیستن
این قابلیت Encapsulation
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
متد ها یا استراکت های که با نام کوچک ایجاد می شوند در همان فایل یا پکیج قابل دسترس هستن در پکبج های دیگر قابل دسترس نیستن
این قابلیت Encapsulation
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
❌ابزار هایی برای زبان فارسی❌
🔹لینک کتابخانه در گیتهاب👇🏻
🔺github.com/mavihq/persian
🔹طریقه نصب
🔺go get github.com/mavihq/persian
🔹متد ها
🔺.ToPersianDigits
🔹تمامی اعداد در رشته رو به اعداد فارسی تبدیل میکند
🔺persian.ToPersianDigits("123salam456")
=> "۱۲۳salam۴۵۶"
.ToPersianDigitsFromInt
🔹تمامی اعداد در رشته رو به اعداد فارسی تبدیل میکند
🔺persian.ToPersianDigitsFromInt(123)
=> "۱۲۳"
.ToEnglishDigits
🔹تمامی اعداد در رشته رو به اعداد انگلیسی تبدیل میکند
🔺persian.ToEnglishDigits("۱۲۳salam۴۵۶")
=> "123salam456"
.OnlyEnglishNumbers
🔹در متن تمامی حروف را حذف کرده و فقط اعداد انگلیسی میمانند.
🔺persian.OnlyEnglishNumbers("123salam۴۵۶")
=> "123"
.OnlyPersianNumbers
🔹در متن تمامی حروف را حذف کرده و فقط اعداد فارسی میمانند.
🔺persian.OnlyPersianNumbers("123salam۴۵۶")
=> "۴۵۶"
.SwitchToPersianKey
🔹تمامی حروف در رشته رو به معادل فارسی شان تبدیل میکند
🔺persian.SwitchToPersianKey("sghl o,fd ? o,fl llk,k")
=> "سلام خوبی ؟ خوبم ممنون"
.SwitchToEnglishKey
🔹تمامی حروف در رشته رو به معادل انگلیسی شان تبدیل میکند
🔺persian.SwitchToEnglishKey("اثغ صاشفس عح ؟")
=> "hey whats up ?"
.Currency
🔹اعداد در رشته را به صورت نوشتاری پول تبدیل میکند.
🔺persian.Currency("1234567")
=> "۱،۲۳۴،۵۶۷"
.Toman
🔹اعداد در رشته را به صورت نوشتاری پول با پسوند تومان تبدیل میکند.
🔺persian.Toman("1234567")
=> "۱،۲۳۴،۵۶۷ تومان"
.Rial
🔹اعداد در رشته را به صورت نوشتاری پول با پسوند ریال تبدیل میکند.
🔺persian.Rial("1234567")
=> "۱،۲۳۴،۵۶۷ ﷼"
.FixArabic
🔹کاراکتر های عربی در رشته را به معادل فارسی شان تبدیل میکند.
🔺persian.FixArabic("کوروش")
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🔹لینک کتابخانه در گیتهاب👇🏻
🔺github.com/mavihq/persian
🔹طریقه نصب
🔺go get github.com/mavihq/persian
🔹متد ها
🔺.ToPersianDigits
🔹تمامی اعداد در رشته رو به اعداد فارسی تبدیل میکند
🔺persian.ToPersianDigits("123salam456")
=> "۱۲۳salam۴۵۶"
.ToPersianDigitsFromInt
🔹تمامی اعداد در رشته رو به اعداد فارسی تبدیل میکند
🔺persian.ToPersianDigitsFromInt(123)
=> "۱۲۳"
.ToEnglishDigits
🔹تمامی اعداد در رشته رو به اعداد انگلیسی تبدیل میکند
🔺persian.ToEnglishDigits("۱۲۳salam۴۵۶")
=> "123salam456"
.OnlyEnglishNumbers
🔹در متن تمامی حروف را حذف کرده و فقط اعداد انگلیسی میمانند.
🔺persian.OnlyEnglishNumbers("123salam۴۵۶")
=> "123"
.OnlyPersianNumbers
🔹در متن تمامی حروف را حذف کرده و فقط اعداد فارسی میمانند.
🔺persian.OnlyPersianNumbers("123salam۴۵۶")
=> "۴۵۶"
.SwitchToPersianKey
🔹تمامی حروف در رشته رو به معادل فارسی شان تبدیل میکند
🔺persian.SwitchToPersianKey("sghl o,fd ? o,fl llk,k")
=> "سلام خوبی ؟ خوبم ممنون"
.SwitchToEnglishKey
🔹تمامی حروف در رشته رو به معادل انگلیسی شان تبدیل میکند
🔺persian.SwitchToEnglishKey("اثغ صاشفس عح ؟")
=> "hey whats up ?"
.Currency
🔹اعداد در رشته را به صورت نوشتاری پول تبدیل میکند.
🔺persian.Currency("1234567")
=> "۱،۲۳۴،۵۶۷"
.Toman
🔹اعداد در رشته را به صورت نوشتاری پول با پسوند تومان تبدیل میکند.
🔺persian.Toman("1234567")
=> "۱،۲۳۴،۵۶۷ تومان"
.Rial
🔹اعداد در رشته را به صورت نوشتاری پول با پسوند ریال تبدیل میکند.
🔺persian.Rial("1234567")
=> "۱،۲۳۴،۵۶۷ ﷼"
.FixArabic
🔹کاراکتر های عربی در رشته را به معادل فارسی شان تبدیل میکند.
🔺persian.FixArabic("کوروش")
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
❌چگونگی استفاد از پکیج ها❌
🔹وقتی که یک اسم برای پکیج انتخاب می کنیم، در ذهنتون باشه که هر جایی که بخواهیم اون رو صدا بزنیم باید نام همون پکیج رو صدا بزنیم که بتونیم توابع اون پکیج رو اجرا کنیم و یا از اون استفاده کنیم.
🔹سعی کنید نام پکیج های شما مختلف باشند. یعنی مشابه هم نباشند. حتی با کتابخانه های استاندارد هم تفاوت داشته باشند که هیچوقت دچار مشکل نشوید
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🔹وقتی که یک اسم برای پکیج انتخاب می کنیم، در ذهنتون باشه که هر جایی که بخواهیم اون رو صدا بزنیم باید نام همون پکیج رو صدا بزنیم که بتونیم توابع اون پکیج رو اجرا کنیم و یا از اون استفاده کنیم.
🔹سعی کنید نام پکیج های شما مختلف باشند. یعنی مشابه هم نباشند. حتی با کتابخانه های استاندارد هم تفاوت داشته باشند که هیچوقت دچار مشکل نشوید
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
❌Package main ❌
🔹برای کامپایل کردن کدها ما مجبوریم که این پکیج رو تعریف کنیم و به اون نیاز داریم. داخل package main یک function وجود داره به نام function main که اون هم نیاز هست که 100% تعریف بشه و تا تعریف نشه نمیتونیم کدمون رو کامپایل کنیم.
🔹بنابراین در نظر داشته باشید که کدهای اصلی ما در package main قرار می گیرند و بقیه کدها می تونن یه جور کتابخونه باشن که ایمپورت میشن داخل این پکیج.
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🔹برای کامپایل کردن کدها ما مجبوریم که این پکیج رو تعریف کنیم و به اون نیاز داریم. داخل package main یک function وجود داره به نام function main که اون هم نیاز هست که 100% تعریف بشه و تا تعریف نشه نمیتونیم کدمون رو کامپایل کنیم.
🔹بنابراین در نظر داشته باشید که کدهای اصلی ما در package main قرار می گیرند و بقیه کدها می تونن یه جور کتابخونه باشن که ایمپورت میشن داخل این پکیج.
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy