&& fv.IsBoolFlag() { // bool valueඞཁͳ͍ if has_value { if err := fv.Set(value); err != nil { return false, f.failf("invalid boolean value %q for - %s: %v", value, name, err) } } else { fv.Set("true") } } else { // = ͕ͳ͚Ε࣍ͷҾΛ value ͱͯ͠ॲཧ if !has_value && len(f.args) > 0 { // value is the next arg has_value = true value, f.args = f.args[0], f.args[1:] } if !has_value { return false, f.failf("flag needs an argument: -%s", name) } if err := flag.Value.Set(value); err != nil { return false, f.failf("invalid value %q for flag -%s: %v", value, name, err) } } if f.actual == nil { f.actual = make(map[string]*Flag) } f.actual[name] = flag // औಘͨ͠ϑϥάΛ actual ʹՃ return true, nil }