গল্ফ ইন ইন গো


25

গোতে গল্ফ করার জন্য আপনার কাছে কোন সাধারণ টিপস রয়েছে? আমি কোড গল্ফিংয়ে নতুন এবং এমন ধারণাগুলি সন্ধান করছি যা সাধারণভাবে গল্ফ সমস্যার ক্ষেত্রে কোড প্রয়োগ করা যেতে পারে যা অন্তত গো-র কিছুটা নির্দিষ্ট।

অনুগ্রহ করে প্রতি উত্তরে একটি পরামর্শ দিন।


3
আমরা Goট্যাগটি তৈরি করতে চাইব , কিন্তু তারপরে, গো এমনকি এখানে গল্ফ করার জন্য ব্যবহৃত হচ্ছে?
অপটিমাইজার

@ অপ্টিমাইজার আমি ব্যবহার
বিড়াল

3
"গো-লিফিংয়ের টিপস"
উরিল

উত্তর:


12

@ এমএমবিএলএম এর উত্তরটি দ্বারা অনুপ্রাণিত এখানে

আপনি যখন কোনও প্যাকেজের ফাংশনগুলি বিশ্বব্যাপী নেমস্পেসে রেখে দিতে পারেন যখন আপনি সেগুলি এ জাতীয়ভাবে आयात করেন:

package main

import ."fmt"

func main() {
    Printf("Hello World!")
}

9

আপনি যখন প্যাকেজগুলি আমদানি করবেন তখন আপনি নিজের পছন্দমতো নাম রাখতে পারেন।

package main

import f "fmt"

func main() {
    f.Printf("Hello World\n")
}

এটি এখানে শিখেছি ।


3
আপনি এটি করতে পারেন import ."fmt"এবং তারপরে Printlnএবং বাকী fmtকাজগুলি বিশ্বব্যাপী নেমস্পেসে রয়েছে। এছাড়াও, আপনার সেমিকোলনগুলির প্রয়োজন নেই। কখনও না, যদি না আপনার কোনও লাইনে একাধিক বক্তব্য থাকে
বিড়াল

নোট করুন যে গোলাং- তে, স্বয়ংক্রিয় সেমিকোলন সন্নিবেশের কারণে ব্রেসগুলি একই লাইনে যেতে হবে । আরও তথ্য: golang.org/doc/faq#semicolons
বিড়াল

7

নামযুক্ত রিটার্ন মানগুলি কয়েকটি বাইট সংরক্ষণ করতে পারে। উদাহরণ স্বরূপ:

func x()string{
r:="" //Do stuff
return r}

এর সাহায্যে 3 টি বাইট সংরক্ষণ করতে পারবেন

func x()(r string){
//Do stuff
return}

আপনার ফাংশনটি শুরুতে যদি আপনার একাধিক ভেরিয়েবল ঘোষণা করতে হয় তবে এটি আরও কার্যকর।


7

আপনার যদি একক এক সাথে অনেকগুলি বিভিন্ন মানের তুলনা করতে হয় তবে switchএকক ক্ষেত্রে এটি ব্যবহার করা আরও স্থান-দক্ষ হতে পারে ।

if x==1||x==2||x==3||x==4{}
switch x{case 1,2,3,4:}

2

একাধিক চলক ঘোষণা:

i,s:=0,""

var(i int;s string)

স্ট্রিং রূপান্তর থেকে ইনট: (সীমিত তবে কখনও কখনও সহায়ক)

n:=byte("9"[0])-48 // actual type is uint8

n,_:=strconv.Atoi("9")

এবং বিপরীতভাবে

s:=string(9+48)

s:=strconv.Itoa(9)

fmt.Sprintসম্ভবত বাইটস সংরক্ষণ করতে পারে strconv.Atoi, কারণ আপনি সম্ভবত fmtইতিমধ্যে আমদানি করেছেন ।
EMBLEM

@ এমবেলম আমার মনে strconvহয় গল্ফ কোডটি সাধারণ কোডে কী হবে তা কেবল দেখানোর জন্য সেখানে ছিল।
বেনি জোবিগান

2

গো সংকলকটির পূর্বনির্ধারিত printএবং printlnফাংশন রয়েছে যা এফএমটি আমদানির প্রয়োজন হয় না, এর পরিবর্তে।

package main
import."fmt"
func main(){Printf(`Hello World
`)}

আপনি এটি লিখতে পারেন।

package main
func main(){print(`Hello World
`)}

নোট করুন যে এটি STDERR এ আউটপুট দেয়।


1

রেঞ্জ লুপের জন্য প্রচুর স্টাফ .চ্ছিক।

স্ট্যান্ডার্ড সংস্করণ:

for i,v:=range a{
// Do stuff
}

যদি i, vইতিমধ্যে সংজ্ঞায়িত করা হয়েছে এবং ওভাররাইট করা যায়:

for i,v=range a{
// Do stuff
}

আপনি যদি মূল্য সম্পর্কে চিন্তা না করেন:

for i:=range a{
// Do stuff
}

আপনি যদি মানটির বিষয়ে চিন্তা না করেন এবং iইতিমধ্যে সংজ্ঞায়িত করা হয়েছে:

for i=range a{
// Do stuff
}

আপনি যদি সূচক বা মান সম্পর্কে চিন্তা করেন না:

for range a{
// Do stuff
}

যদি আপনি একটি অসীম লুপ চান:

for{
// Do stuff
}

1

একটি নিউলাইন থাকতে স্ট্রিং দরকার? লিখবেন না \n, ব্যাককোটিস সহ একটি কাঁচা স্ট্রিং তৈরি করুন এবং এটিতে একটি আক্ষরিক নিউলাইন রাখুন।

s:="\n" // 7 bytes
s:=`
` // 6 bytes

0

আপনি যে কোনও সংখ্যক খোলার ধনুর্বন্ধনী এক লাইনে রাখতে পারেন, তবে যে লাইনে খোলার ধনুর্বন্ধনী রয়েছে তা অন্তত একটি বন্ধনী বন্ধনী ধারণ করতে পারে।

সঠিক:

func main(){if true{switch{case 1==1:for{break
}}}}

এছাড়াও সঠিক:

func main(){if true{switch{case 1==1:for{break}
}}}

এছাড়াও সঠিক:

func main(){if true{switch{case 1==1:for{
break}}}}

ত্রুটিপূর্ণ:

func main() {
    if true{for{break}}
}

0

যান বিট অপারেশনের জন্য বিভিন্ন অপারেটর প্রাধান্য আছে, <<, >>, &, ইত্যাদি সাধারণত নিম্ন প্রাধান্য চেয়ে আছে +এবং -সবচেয়ে ভাষায়, কিন্তু যান তারা হিসাবে একই প্রাধান্য আছে *এবং /

Precedence    Operator
5             *  /  %  <<  >>  &  &^
4             +  -  |  ^
3             ==  !=  <  <=  >  >=
2             &&
1             ||

এটি কিছু বন্ধনী সংরক্ষণ করতে ব্যবহার করা যেতে পারে।

সর্বাধিক ভাষা:

(a&b)*c

যান:

a&b*c

0

এক-বর্ণের ভেরিয়েবলগুলিতে দীর্ঘ লাইব্রেরির ফাংশন নামগুলি অর্পণ করে গো-এর প্রথম-শ্রেণীর ফাংশনগুলির পুরো ব্যবহার করুন।

import."strings"
r:=Replace
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.