Функция flag.Set
Функция flag.Set устанавливает значение для указанного флага командной строки. В первый параметр мы передаем имя флага, во второй параметр - новое строковое значение, которое будет преобразовано в соответствующий тип. Функция возвращает ошибку, если флаг с таким именем не был определен или переданное значение не удалось преобразовать к нужному типу.
Синтаксис
flag.Set(name, value string) error
Пример
Давайте определим строковый флаг и установим ему новое значение с помощью flag.Set:
package main
import (
"flag"
"fmt"
)
func main() {
var name = flag.String("name", "default", "user name")
flag.Parse()
err := flag.Set("name", "john")
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(*name)
}
Результат выполнения кода:
"john"
Пример
Давайте посмотрим, как flag.Set работает с числовым флагом:
package main
import (
"flag"
"fmt"
)
func main() {
var age = flag.Int("age", 18, "user age")
flag.Parse()
err := flag.Set("age", "25")
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(*age)
}
Результат выполнения кода:
"25"
Пример
Рассмотрим попытку установить неправильное значение для булевого флага:
package main
import (
"flag"
"fmt"
)
func main() {
var enabled = flag.Bool("enabled", false, "enable feature")
flag.Parse()
err := flag.Set("enabled", "not-a-bool")
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(*enabled)
}
Результат выполнения кода:
"Error: invalid boolean value not-a-bool for flag enabled: parse error"
Пример
Попробуем установить значение для несуществующего флага:
package main
import (
"flag"
"fmt"
)
func main() {
err := flag.Set("unknown", "value")
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println("Success")
}
Результат выполнения кода:
"Error: no such flag -unknown"
Смотрите также
-
функцию
flag.String,
которая определяет флаг строкового типа -
функцию
flag.Int,
которая определяет флаг целочисленного типа -
функцию
flag.Bool,
которая определяет флаг булевого типа -
функцию
flag.Lookup,
которая возвращает информацию о флаге по его имени