с glob это невозможно. вы можете использовать только: * соответствует всем? соответствует любому символу [seq], соответствующему любому символу в seq [! seq], который соответствует любому символу, не содержащемуся в seq
, использовать os.listdir и regexp для проверки шаблонов:
for x in os.listdir('.'):
if re.match('.*\.txt|.*\.sql', x):
print x
В Движении конструктор может быть реализован с помощью функции, которая возвращает указатель на измененную структуру.
type Colors struct {
R byte
G byte
B byte
}
// Constructor
func NewColors (r, g, b byte) *Colors {
return &Color{R:r, G:g, B:b}
}
Для слабых зависимостей и лучшей абстракции, конструктор не возвращает указатель на структуру, но интерфейс, который реализует эта структура. Этот дизайн помогает использовать насмешку при тестировании кода.
type Painter interface {
paintMethod1() byte
paintMethod2(byte) byte
}
type Colors struct {
R byte
G byte
B byte
}
// Constructor return intreface
func NewColors(r, g, b byte) Painter {
return &Color{R: r, G: g, B: b}
}
func (c *Colors) paintMethod1() byte {
return c.R
}
func (c *Colors) paintMethod2(b byte) byte {
return c.B = b
}