درس چهارم برنامه نویسی گولنگ
درس چهارم برنامه نویسی گولنگ در مورد معرفی نوع داده وآرایه و برشها است. این موارد بخش مهمی در مفاهیم هر زبان میباشند و باید به آن ها توجه داشت. برای یادگیری زبان برنامه نویسی گولنگ کافیست به سایت آموزش برنامه نویسی در کرج سر بزنید.
نوع دادهها
نوع داده یک مفهوم مهم در برنامه نویسی است. نوع داده، اندازه و نوع مقادیر متغیر را مشخص میکند. Go به صورت ایستا تایپ میشود، به این معنی که وقتی یک نوع متغیر تعریف شد، فقط میتواند دادههایی از آن نوع را ذخیره کند.
package main
import (“fmt”)
}()func main
var a bool = true // Boolean
var b int = 5 // Integer
var c float32 = 3.14 // Floating point number
var d string = “Hi!” // String
fmt.Println(“Boolean: “, a)
fmt.Println(“Integer: “, b)
fmt.Println(“Float: “, c)
fmt.Println(“String: “, d)
{
سه نوع داده اصلی در GO :
۱) bool یک مقدار بولی را نشان می دهد که مقادیر نشان داده در دو حالت درست یا نادرست است.
یک نوع داده بولی با کلمه کلیدی bool اعلام می شود و فقط می تواند مقادیر true یا false را بگیرد. مقدار پیش فرض یک نوع داده بولی false است.
۲) عددی (numeric): نشان دهنده انواع عدد صحیح، مقادیر ممیز شناور و انواع پیچیده است.
انواع داده عدد صحیح در گولنگ
انواع دادههای عدد صحیح برای ذخیره یک عدد کامل بدون اعشار، مانند 35، 50- یا 1345000 استفاده می شود.
نوع داده عدد صحیح دارای دو دسته است:
Signed integers – میتوانند مقادیر مثبت و منفی را ذخیره کنند.
Unsigned integers – فقط میتوانند مقادیر غیر منفی را ذخیره کنند.
نکته: نوع پیش فرض عدد صحیح int است. اگر یک نوع را مشخص نکنید، نوع آن int خواهد بود.
انواع داده شناور
انواع داده های شناور برای ذخیره اعداد مثبت و منفی با نقطه اعشار مانند 35/3، 2/34- یا 3597/34987 استفاده میشود. نوع داده شناور دارای دو کلمه کلیدی است:
Range
|
Size |
Type |
-3.4e +38 to 3.4e +38 | 32 Bit | float32 |
-1.7e+308 to 1.7+308 | 64 Bit | float64 |
نکته: نوع پیش فرض float float64 است. اگر نوع را مشخص نکنید، نوع float64 خواهد بود.
۳) String یک مقدار رشته را نشان می دهد.
نوع داده رشته ای برای ذخیره دنباله ای از کاراکترها (متن) استفاده می شود. مقادیر رشته ها باید با دو نقل قول”” قرار بگیرد.
آرایهها
آرایهها برای ذخیره چندین مقدار از یک نوع در یک متغیر استفاده میشوند، بهجای اینکه برای هر مقدار متغیرهای جداگانه اعلام کنند.
در Go دو راه برای اعلام آرایه وجود دارد:
۱) با کلمه var
Syntax
var array_name = [length]datatype{values} // here length is defined
or
var array_name = […]datatype{values} // here length is inferred
۲) با علامت =:
Syntax
array_name := [length]datatype{values} // here length is defined
or
array_name := […]datatype{values} // here length is inferred
نکته: length تعداد عناصر ذخیره شده در آرایه را مشخص میکند. در Go، آرایه ها طول ثابتی دارند. طول آرایه یا با یک عدد تعریف می شود یا استنباط می شود ( به این معنی که کامپایلر بر اساس تعداد مقادیر، طول آرایه را تعیین میکند).
package main
import (“fmt”)
}()func main
var arr1 = [3]int{1,2,3}
arr2 := [5]int{4,5,6,7,8}
fmt.Println(arr1)
fmt.Println(arr2)
{
۱)دسترسی به عناصر یک آرایه
می توانید با مراجعه به شماره فهرست به یک عنصر آرایه خاص دسترسی پیدا کنید. در Go، شاخصهای آرایه از 0 شروع میشوند. این بدان معناست که [0] اولین عنصر، [1] عنصر دوم است، و غیره
۲) تغییر عناصر یک آرایه
می توانید مقدار یک عنصر آرایه خاص را با مراجعه به شماره شاخص تغییر دهید.
این مثال نحوه تغییر مقدار عنصر سوم در آرایه قیمت ها را نشان می دهد:
package main
import (“fmt”)
}()func main
prices := [3]int{10,20,30}
prices[2] = 50
fmt.Println(prices)
{
۳) مقداردهی اولیه آرایه
اگر یک آرایه یا یکی از عناصر آن در کد مقداردهی اولیه نشده باشد، مقدار پیش فرض نوع آن به آن اختصاص داده میشود.
نکته: مقدار پیشفرض برای int صفر و مقدار پیشفرض رشته “” است.
۴) مقداردهی عناصر خاص
میتوان فقط عناصر خاصی را در یک آرایه مقداردهی اولیه کرد.
۵) پیدا کردن طول یک آرایه.
تابع len() برای یافتن طول یک آرایه استفاده می شود:
package main
import (“fmt”)
}()func main
arr1 := [4]string{“Volvo”, “BMW”, “Ford”, “Mazda”}
arr2 := […]int{1,2,3,4,5,6}
fmt.Println(len(arr1))
fmt.Println(len(arr2))
{
برش ها (Slices)
برش ها شبیه آرایه ها هستند، اما قدرتمندتر و انعطاف پذیرتر هستند. مانند آرایه ها، برش ها نیز برای ذخیره چندین مقدار از یک نوع در یک متغیر استفاده می شوند. با این حال، بر خلاف آرایهها، طول یک برش میتواند رشد کند و به دلخواه شما کوچک شود.
در Go، چندین راه برای ایجاد یک برش وجود دارد:
با استفاده از قالب []datatype{values}
ایجاد یک برش از یک آرایه
با استفاده از تابع make()
ایجاد یک برش با []datatype{values}
Syntax
slice_name := []datatype{values}
یک روش رایج برای اعلام یک برش به این صورت است:
myslice := []int{}
کد بالا یک برش خالی با طول 0 و ظرفیت 0 را اعلام می کند.
برای مقداردهی اولیه برش در حین اعلان، از این استفاده کنید:
myslice := []int{1,2,3}
کد بالا تکه ای از اعداد صحیح را به طول 3 و همچنین ظرفیت 3 را اعلام می کند.
در Go، دو تابع برای برگرداندن طول و ظرفیت یک برش وجود دارد:
تابع len() – طول برش (تعداد عناصر موجود در برش) را برمیگرداند.
تابع cap() – ظرفیت برش را برمی گرداند (تعداد عناصری که برش می تواند رشد کند یا کوچک شود)
package main
import (“fmt”)
}()func main
myslice1 := []int
fmt.Println(len(myslice1))
fmt.Println(cap(myslice1))
fmt.Println(myslice1)
myslice2 := []string{“Go”, “Slices”, “Are”, “Powerful”}
fmt.Println(len(myslice2))
fmt.Println(cap(myslice2))
fmt.Println(myslice2)
{
در مثال بالا می بینیم که در برش اول (myslice1) عناصر واقعی مشخص نشده اند، بنابراین هم طول و هم ظرفیت برش صفر خواهد بود. در برش دوم (myslice2) عناصر مشخص شده اند و طول و ظرفیت هر دو برابر تعداد عناصر واقعی مشخص شده است.
یک برش از یک آرایه ایجاد کنید
می توانید با برش دادن یک آرایه یک برش ایجاد کنید:
Syntax
var myarray = [length]datatype{values} // An array
myslice := myarray[start:end] // A slice made from the array
در مثال بالا myslice یک برش به طول 2 است. از arr1 ساخته شده است که یک آرایه با طول 6 است.
برش از عنصر سوم آرایه که دارای مقدار 12 است شروع می شود (به یاد داشته باشید که شاخص های آرایه از 0 شروع می شوند. این بدان معنی است که [0] عنصر اول، [1] عنصر دوم و غیره است). برش می تواند تا انتهای آرایه رشد کند. یعنی ظرفیت برش 4 است.
اگر myslice از عنصر 0 شروع شود، ظرفیت برش 6 خواهد بود.
با تابع make() یک Slice ایجاد کنید
تابع make() همچنین می تواند برای ایجاد یک برش استفاده شود.
Syntax
slice_name := make([]type, length, capacity)
نکته: اگر پارامتر ظرفیت تعریف نشده باشد برابر طول خواهد بود.
این مثال نحوه ایجاد برش ها را با استفاده از تابع make() نشان می دهد:
package main
import (“fmt”)
}()func main
myslice1 := make([]int, 5, 10)
fmt.Printf(“myslice1 = %v\n”, myslice1)
fmt.Printf(“length = %d\n”, len(myslice1))
fmt.Printf(“capacity = %d\n”, cap(myslice1))
// with omitted capacity
myslice2 := make([]int, 5)
fmt.Printf(“myslice2 = %v\n”, myslice2)
fmt.Printf(“length = %d\n”, len(myslice2))
fmt.Printf(“capacity = %d\n”, cap(myslice2))
{
دسترسی، تغییر، ضمیمه و کپی برش
دسترسی به عناصر یک برش
با مراجعه به شماره فهرست می توانید به یک عنصر برش خاصی دسترسی داشته باشید.
در Go، ایندکس ها از 0 شروع می شوند. یعنی [0] اولین عنصر، [1] عنصر دوم و غیره است.
این مثال نحوه دسترسی به عناصر اول و سوم در برش قیمت ها را نشان می دهد:
تغییر عناصر یک برش
همچنین می توانید با مراجعه به شماره فهرست، یک عنصر برش خاص را تغییر دهید.
عناصر را به یک برش اضافه کنید
با استفاده از تابع append() می توانید عناصر را به انتهای یک برش اضافه کنید:
Syntax
slice_name = append(slice_name, element1, element2, …)