Skip to content

Commit

Permalink
Update 2.2-struct.md
Browse files Browse the repository at this point in the history
تصحیح متن
  • Loading branch information
r3a70 authored Jun 9, 2023
1 parent f030069 commit 53a05f0
Showing 1 changed file with 13 additions and 13 deletions.
26 changes: 13 additions & 13 deletions content/chapter 2/2.2-struct.md
Original file line number Diff line number Diff line change
Expand Up @@ -376,21 +376,21 @@ Emp: main.employee{name:"Sam", age:31, salary:2000}

### 2.2.5.2 چاپ ساختار با استفاده از پکیج JSON

در این روش ما با استفاده از ۲ تابع **Marshal** و **MarshalIndent** پکیج json ساختار را encode می کنیم. و در نهایت خروجی encode شده را چاپ می کنیم.
در این روش ما با استفاده از ۲ تابع **Marshal** و **MarshalIndent** پکیج json, ساختار را encode می کنیم, و در نهایت خروجی encode شده را چاپ می کنیم.

- **Marshal** - در این تابع به عنوان ورودی ساختار را پاس می دهیم و در نهایت ۲ خروجی از نوع بایت و خطا دریافت می کنیم.
- **Marshal** - در این تابع ما به عنوان ورودی, ساختار را پاس می دهیم و در نهایت ۲ خروجی از نوع بایت و خطا دریافت می کنیم.

```go
Marshal(v interface{}) ([]byte, error)
```

- **MarhsalIndent** - با استفاده از این تابع ۳ تا ورودی پاس می دهیم به ترتیب ساختار, پیشوند و indent و در نهایت ۲ خروجی از نوع بایت و خطا دریافت می کنیم.
- **MarhsalIndent** - در این تابع ما ۳ تا ورودی به تابع میفرستیم, به ترتیب ساختار, پیشوند و indent و در نهایت ۲ خروجی از نوع بایت و خطا دریافت می کنیم.

```go
MarshalIndent(v interface{}, prefix, indent string) ([]byte, error)
```

حالا با استفاده از توابع فوق یک کد نمونه مثال می زنیم چطور از این توابع استفاده کنید :
حالا با استفاده از توابع فوق یک کد نمونه مثال می زنیم و به شما یاد میدیم که چطور از این توابع استفاده کنید. به مثال زیر دقت کنید:

```go
package main
Expand Down Expand Up @@ -438,14 +438,14 @@ MarshalIndent funnction output {
```

{{< hint warning >}}
برای اطلاعات بیشتر در خصوص پکیج json می توانید به بخش [آموزش کار با json](https://book.gofarsi.ir/chapter-4/work-with-json-file-in-go/)مراجعه کنید.
برای اطلاعات بیشتر در خصوص پکیج json می توانید به بخش [آموزش کار با json](https://book.gofarsi.ir/chapter-4/work-with-json-file-in-go/) مراجعه کنید.
{{< /hint >}}

## 2.2.6 کار با تگ ها در ساختار (struct)

در ساختار زبان گو شما امکان اضافه کردن metadata به هر یک از فیلدها را دارید که ما به عنوان تگ می شناسیم که تگ ها برای انجام یکسری عملیات خاص نظیر encode/decode, اعتبارسنجی مقادیر فیلدها و ... کمک می کند و یکی از کاربردی ترین عناوین در ساختار می باشد.
ساختار زبان گو به شما امکان اضافه کردن metadata به هر یک از فیلدها را میدهد و ما این قابلیت رو به عنوان تگ می شناسیم. تگ ها برای انجام یکسری عملیات خاص نظیر encode/decode, اعتبارسنجی مقادیر فیلدها و ... به ما کمک می کند و یکی از کاربردی ترین عناوین در ساختار هستند.

در زیر ما یک نمونه ساختار به همراه تگ تعریف کردیم :
در مثال زیر ما یک نمونه ساختار به همراه تگ تعریف کردیم :

```go
type strutName struct{
Expand All @@ -455,13 +455,13 @@ type strutName struct{

```go
type employee struct {
Name string `json:"n"`
Age int `json:"a"`
Salary int `json:"s"`
Name string `json:"n"` // n به عنوان کلید در نظر گرفته خواهد شد
Age int `json:"a"` // a به عنوان کلید در نظر گرفته خواهد شد
Salary int `json:"s"` // s به عنوان کلید در نظر گرفته خواهد شد
}
```

تگ json به شما برای تعیین نام key داخل json کمک می کند و شما می توانید عنوان هر یک از فیلدهای بدنه json را یک نام اختصاصی قرار دهید و با استفاده از اون نام اختصاصی عملیات encode/decode در json انجام دهید.
به مثال زیر دقت کنید:

```go
package main
Expand Down Expand Up @@ -489,7 +489,7 @@ func main() {
}
```


خروجی :

```shell
$ go run main.go
Expand All @@ -499,8 +499,8 @@ $ go run main.go
"s": 2000
}
```
فکر میکنم خروجی بالا کاملا برای ما روشن کرد که دقیقا اون تگ هایی که قرار دادیم, برای ما چه کاری انجام دادند. بله **کلید-key** های مارو به اون نام هایی که در تگ ها نوشته بودیم تغییر دادند.

در خروجی بالا نام key هر کدام از فیلدها تغییر کرده و دقت کنید ارتباط فیلدهای ساختار شما با فیلدهای json به واسطه تگی که تعیین کردید می باشد.

## 2.2.7 تعریف فیلد ناشناس در ساختار (struct)

Expand Down

0 comments on commit 53a05f0

Please sign in to comment.