کار با فایل، JSON و ورودی/خروجی در Go

ایجاد شده توسط دکتر مصطفی جلیلی در آموزش برنامه نویسی گولنگ 16 آوریل 2025
اشتراک گذاری


کار با فایل، JSON و ورودی/خروجی در Go


یکی از بخش‌های کاربردی در برنامه‌نویسی، تعامل با فایل‌ها، کار با داده‌های JSON و دریافت ورودی از کاربر است. در زبان Go ابزارهای ساده و قوی‌ای برای این کار وجود داره که تو این بخش باهاشون آشنا می‌شیم.




کار با فایل‌ها در Go (خواندن و نوشتن)


کتابخانه os و io/ioutil برای مدیریت فایل‌ها استفاده می‌شن.


نوشتن در فایل:


import (
"os"
)
func main() {
file, err := os.Create("test.txt")
if err != nil {
panic(err)
}
defer file.Close()
file.WriteString("سلام دنیا!\n")
}

خواندن از فایل:


import (
"fmt"
"os"
)
func main() {
data, err := os.ReadFile("test.txt")
if err != nil {
panic(err)
}
fmt.Println(string(data))
}



JSON در Go: مارشال و آن‌مارشال


در Go با استفاده از پکیج encoding/json می‌تونیم به راحتی داده‌هامون رو به فرمت JSON تبدیل کنیم یا از JSON به ساختارهای Go برگردونیم.


مارشال (تبدیل به JSON):


import (
"encoding/json"
"fmt"
)
type Person struct {
Name string
Age int
}
func main() {
p := Person{Name: "Ali", Age: 30}
jsonData, _ := json.Marshal(p)
fmt.Println(string(jsonData)) // {"Name":"Ali","Age":30}
}

آن‌مارشال (خواندن JSON به struct):


func main() {
jsonStr := `{"Name":"Ali","Age":30}`
var p Person
json.Unmarshal([]byte(jsonStr), &p)
fmt.Println(p.Name, p.Age) // Ali 30
}



استفاده از پکیج encoding/json


پکیج encoding/json برای تبدیل داده‌ها بین ساختارهای Go و فرمت JSON استفاده می‌شه. از تگ‌های json در تعریف struct هم می‌تونیم استفاده کنیم تا کلیدهای JSON سفارشی کنیم:


type Person struct {
Name string `json:"full_name"`
Age int `json:"age"`
}



خواندن ورودی کاربر از CLI


برای دریافت ورودی از کاربر، می‌تونیم از fmt.Scanln استفاده کنیم:


var name string
fmt.Print("اسمت چیه؟ ")
fmt.Scanln(&name)
fmt.Println("سلام،", name)

همچنین برای دریافت چند مقدار:


var a, b int
fmt.Scan(&a, &b)



استفاده از Flag و Argument


برای پروژه‌های خط فرمانی می‌تونیم از پکیج flag استفاده کنیم که ورودی‌های CLI رو با پارامترهای مشخص دریافت کنه:


مثال:


import (
"flag"
"fmt"
)
func main() {
name := flag.String("name", "کاربر", "نام شما")
age := flag.Int("age", 25, "سن شما")
flag.Parse()
fmt.Printf("سلام %s، سن شما %d سال است\n", *name, *age)
}

اجرا:


go run main.go -name=Ali -age=30



در این بخش یاد گرفتیم چطور با فایل‌ها کار کنیم، داده‌ها رو با JSON تبادل کنیم و ورودی از کاربر بگیریم. این مهارت‌ها در اکثر پروژه‌ها ضروری هستن.

نظرات (0)

اشتراک گذاری

این پست را با دیگران به اشتراک بگذارید

تنظیمات GDPR

When you visit any of our websites, it may store or retrieve information on your browser, mostly in the form of cookies. This information might be about you, your preferences or your device and is mostly used to make the site work as you expect it to. The information does not usually directly identify you, but it can give you a more personalized web experience. Because we respect your right to privacy, you can choose not to allow some types of cookies. Click on the different category headings to find out more and manage your preferences. Please note, that blocking some types of cookies may impact your experience of the site and the services we are able to offer.