when opts bind to struct, if field has default value, it could not be overwrite, but in most cases, setting default value is better I think.