Golang Notes

مدتی است در حال یادگیری Golang هستم. Golang یک زبان statically complied است که توسط Google توسعه داده شده است. اینجا نکاتی که در مورد Golang یاد میگیرم رو سعی میکنم به صورت پراکنده به اشتراک بذارم.

golang

توابع

Naked function

Closure

Loop

توی Golang تنها یک مدل loop داریم و اونم for هستش که به دو حالت میشه اون رو نوشت:

for i := 0; i < len(items); i++ {
  fmt.Println(items[i])
}

for _, item := range items {
  fmt.Println(item)
}

Array

در Go برای تعریف آرایه دو راه داریم؛ یکی اینکه آرایه با سایز مشخص تعیین کنیم یا اینکه سایز آرایه را داینامیک در نظر بگیرم؛ به حالت دوم Slice گفته میشود:

// Fixed Array
users := [2]string{ "Sirwan", "Sana" }

// Slice
users := []string{ "Sirwan", "Sana" }

برای اضافه کردن یک آیتم به Slice Array میتوانیم از تابع append استفاده کنیم:

users := []string{ "Sirwan", "Sana" }
users = append(users, "Kaywan")

Maps

خیلی شبیه Record در TS هستند:

user := map[string]string{ "name": "Sirwan", "lastName": "Afifi" }

// Example:
user := map[int] map[string]string {
	1: {"firstName": "Sirwan", "lastName": "Afifi"},
	2: {"firstName": "Kaywan", "lastName": "Afifi"},
	3: {"firstName": "Sana", "lastName": "Afifi"},
}

for _, u := range user {
	for k, v := range u {
		fmt.Printf("%s: %s \t", k, v)
	}
	fmt.Println()
	fmt.Println(strings.Repeat("*", 40))
	fmt.Println()
}

Struct

توسط Struct میتوانیم یک type تعریف کنیم:

user := User{firstName: "Sirwan", lastName: "Afifi"}

© 2021