func String(register Register, name string, options ...FlagOptionApplyer) *string {
	p := new(string)
	_ = StringVar(register, p, name, options...)
	return p
}
String defines a string flag with specified name.
The return value is the address of a string variable that stores the value of the flag.

If a name contains only one rune, it will be a short name, otherwise a long name.
To set a short name, you pass a cli.WithShort.

_ = cli.String(register, "name", cli.WithShort("n"))

To set a long name, you pass a cli.WithLong.

_ = cli.String(register, "n", cli.WithLong("name"))

A usage may be set by passing a cli.Usage.

_ = cli.String(register, "name", cli.Usage("The name of user"))

The flag is optional by default.
This may be changed by passing the cli.Required.

_ = cli.String(register, "name", cli.Required)

All options can be used together.
package cli
import (
	"time"
)
func BoolVar(register Register, p *bool, name string, options ...FlagOptionApplyer) error {
	return Var(register, newBoolValue(p), name, options...)
}
func Bool(register Register, name string, options ...FlagOptionApplyer) *bool {
	p := new(bool)
	_ = BoolVar(register, p, name, options...)
	return p
}
func Uint8Var(register Register, p *uint8, name string, options ...FlagOptionApplyer) error {
	return Var(register, newUint8Value(p), name, options...)
}
func Uint8(register Register, name string, options ...FlagOptionApplyer) *uint8 {
	p := new(uint8)
	_ = Uint8Var(register, p, name, options...)
	return p
}
func Uint16Var(register Register, p *uint16, name string, options ...FlagOptionApplyer) error {
	return Var(register, newUint16Value(p), name, options...)
}
func Uint16(register Register, name string, options ...FlagOptionApplyer) *uint16 {
	p := new(uint16)
	_ = Uint16Var(register, p, name, options...)
	return p
}
func Uint32Var(register Register, p *uint32, name string, options ...FlagOptionApplyer) error {
	return Var(register, newUint32Value(p), name, options...)
}
func Uint32(register Register, name string, options ...FlagOptionApplyer) *uint32 {
	p := new(uint32)
	_ = Uint32Var(register, p, name, options...)
	return p
}
func Uint64Var(register Register, p *uint64, name string, options ...FlagOptionApplyer) error {
	return Var(register, newUint64Value(p), name, options...)
}
func Uint64(register Register, name string, options ...FlagOptionApplyer) *uint64 {
	p := new(uint64)
	_ = Uint64Var(register, p, name, options...)
	return p
}
func Int8Var(register Register, p *int8, name string, options ...FlagOptionApplyer) error {
	return Var(register, newInt8Value(p), name, options...)
}
func Int8(register Register, name string, options ...FlagOptionApplyer) *int8 {
	p := new(int8)
	_ = Int8Var(register, p, name, options...)
	return p
}
func Int16Var(register Register, p *int16, name string, options ...FlagOptionApplyer) error {
	return Var(register, newInt16Value(p), name, options...)
}
func Int16(register Register, name string, options ...FlagOptionApplyer) *int16 {
	p := new(int16)
	_ = Int16Var(register, p, name, options...)
	return p
}
func Int32Var(register Register, p *int32, name string, options ...FlagOptionApplyer) error {
	return Var(register, newInt32Value(p), name, options...)
}
func Int32(register Register, name string, options ...FlagOptionApplyer) *int32 {
	p := new(int32)
	_ = Int32Var(register, p, name, options...)
	return p
}
func Int64Var(register Register, p *int64, name string, options ...FlagOptionApplyer) error {
	return Var(register, newInt64Value(p), name, options...)
}
func Int64(register Register, name string, options ...FlagOptionApplyer) *int64 {
	p := new(int64)
	_ = Int64Var(register, p, name, options...)
	return p
}
func Float32Var(register Register, p *float32, name string, options ...FlagOptionApplyer) error {
	return Var(register, newFloat32Value(p), name, options...)
}
func Float32(register Register, name string, options ...FlagOptionApplyer) *float32 {
	p := new(float32)
	_ = Float32Var(register, p, name, options...)
	return p
}
func Float64Var(register Register, p *float64, name string, options ...FlagOptionApplyer) error {
	return Var(register, newFloat64Value(p), name, options...)
}
func Float64(register Register, name string, options ...FlagOptionApplyer) *float64 {
	p := new(float64)
	_ = Float64Var(register, p, name, options...)
	return p
}
func StringVar(register Register, p *string, name string, options ...FlagOptionApplyer) error {
	return Var(register, newStringValue(p), name, options...)
}