Skip to content

Commit ac51c8e

Browse files
authored
Merge pull request #385 from amirhasanpour/command-line
Updata 4.6-command-line-app.md
2 parents 6d84d70 + acaf423 commit ac51c8e

File tree

1 file changed

+58
-1
lines changed

1 file changed

+58
-1
lines changed

content/chapter 4/4.6-command-line-app.md

Lines changed: 58 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,4 +102,61 @@ func main() {
102102

103103
با اجرای برنامه و وارد کردن یک Command Line مخصوص مثل زیر، می‌توانید مقدارهای مختلفی به Flagهای برنامه خود اختصاص دهید.
104104

105-
در این مثال، مقدار Flag username برابر با "John"، print برابر با true و count برابر با ۵ می‌باشد.
105+
```shell
106+
go run main.go -username=John -print=true -count=5
107+
```
108+
109+
در این مثال، مقدار Flag username برابر با "John"، print برابر با true و count برابر با ۵ می‌باشد.
110+
111+
همچنین قابل ذکر است که سه مدل Flag دیگر در پکیج flag وجود دارند که عبارتند از:
112+
flag.StringVar، flag.BoolVar و flag.IntVar. تفاوت این Flag ها با Flag های قبلی این است
113+
که یک آرگومان اضافی به عنوان اولین آرگومان دریافت می کنند که مقدار تعیین شده برای
114+
Flag به داخل این آرگومان ریخته می شود. در زیر یک مثال نسبتا واقعی در مورد کانفیگ
115+
اولیه برنامه با استفاده از StringVar آمده است:
116+
117+
{{< play >}}
118+
package main
119+
120+
import (
121+
"flag"
122+
"fmt"
123+
)
124+
125+
type application struct {
126+
DSN string
127+
Domain string
128+
JWTSecret string
129+
JWTIssuer string
130+
JWTAudience string
131+
CookieDomain string
132+
APIKey string
133+
}
134+
135+
func main() {
136+
// تعریف یک متغیر از جنس ساختار application
137+
var app application
138+
139+
// پر کردن فیلد های ساختار با استفاده از flag.StringVar
140+
flag.StringVar(&app.DSN, "dsn", "host=localhost port=5432 user=postgres password=postgres dbname=yourdbname sslmode=disable timezone=UTC connect_timeout=5", "postgres connection string")
141+
flag.StringVar(&app.JWTSecret, "jwt-secret", "verysecret", "signing secret")
142+
flag.StringVar(&app.JWTIssuer, "jwt-issuer", "example.com", "signing issuer")
143+
flag.StringVar(&app.JWTAudience, "jwt-audience", "example.com", "signing audience")
144+
flag.StringVar(&app.CookieDomain, "cookie-domain", "localhost", "cookie domain")
145+
flag.StringVar(&app.Domain, "domain", "example.com", "domain")
146+
flag.StringVar(&app.APIKey, "api-key", "9c89eaa00a4a6eefe56f5f53fe3b05a8", "api key")
147+
flag.Parse()
148+
149+
fmt.Println("data source name: ", app.DSN)
150+
fmt.Println("jwt secret: ", app.JWTSecret)
151+
fmt.Println("jwt issuer: ", app.JWTIssuer)
152+
fmt.Println("jwt audience: ", app.JWTAudience)
153+
fmt.Println("cookie domain: ", app.CookieDomain)
154+
fmt.Println("domain: ", app.Domain)
155+
fmt.Println("api key: ", app.APIKey)
156+
}
157+
{{< /play >}}
158+
159+
همانطور که مشاهده می کنید، ابتدا یک ساختار به نام application تعریف کردیم که در واقع
160+
همان مشخصات برنامه ما می باشد. سپس یک نمونه از این ساختار را در تابع اصلی برنامه تعریف
161+
کردیم و فیلد های این نمونه از ساختار application را که app نام دارد با استفاده از
162+
flag.StringVar مقدار دهی کردیم و در نهایت آنها را چاپ کردیم.

0 commit comments

Comments
 (0)