Size: a a a

2020 April 23

IK

Ilya Kaznacheev in Go-go!
Локоть Анатолий
У меня есть пример теста на нем, то не писал и разбираюсь поверхностно.
Вызывается функция Context с лямбдой,  внутри которой нее несколько вызовов It тоже с лямбдами - в них уже вызовы тестируемой сущности и вызовы Expect.

Как я понимаю Context это группа тестов, It это один тест в ней. Ну и проверки результаты, ошибок тоже через эту либу.
Спасибо. Я так понял, что все, кроме BeforeEach, AfterEach и It (ну и вариаций) носят информационный характер для спеки
источник

zl

ziggy lucid in Go-go!
Как грамотней создавать bytes.Buffer? Тут про неочевидное поведение nil-срезов.
1. var buffer bytes.Buffer или buffer := new(bytes.Buffer)
2. buffer := bytes.NewBuffer([]byte{})
источник

ВС

Владимир Столяров... in Go-go!
Так пустой буфер сразу готов к работе
источник

ВС

Владимир Столяров... in Go-go!
1 вариант подойдёт
источник

ВС

Владимир Столяров... in Go-go!
За исключением когда их надо складывать в sync.Pool
источник

x

x-foby in Go-go!
ziggy lucid
Как грамотней создавать bytes.Buffer? Тут про неочевидное поведение nil-срезов.
1. var buffer bytes.Buffer или buffer := new(bytes.Buffer)
2. buffer := bytes.NewBuffer([]byte{})
Второй вариант (bytes.NewBuffer([]byte{})) вообще по сути смысла-то не имеет
источник

zl

ziggy lucid in Go-go!
ага, увидел в доках - The zero value for Buffer is an empty buffer ready to use.
а то что-то подумалось, завтра изменят в глубинах стандартной библиотеки что-нибудь и скажут, что нечего было использовать недокументированные возможности
источник

ВС

Владимир Столяров... in Go-go!
Ну, это не unsafe и не /x/, так что не изменят
источник

zl

ziggy lucid in Go-go!
x-foby
Второй вариант (bytes.NewBuffer([]byte{})) вообще по сути смысла-то не имеет
по мне, так как раз именно этот вариант наиболее очевиден и предсказуем - дословно "создать новый буффер, инициализировав его пустым срезом"
источник

RS

Roman Sharkov in Go-go!
ziggy lucid
Как грамотней создавать bytes.Buffer? Тут про неочевидное поведение nil-срезов.
1. var buffer bytes.Buffer или buffer := new(bytes.Buffer)
2. buffer := bytes.NewBuffer([]byte{})
я лично обычно предпочитаю b := new(bytes.Buffer)
источник

x

x-foby in Go-go!
ziggy lucid
по мне, так как раз именно этот вариант наиболее очевиден и предсказуем - дословно "создать новый буффер, инициализировав его пустым срезом"
var buffer bytes.Buffer
Это структура с трёмя полями, нулевые значения которых итак готовы к работе)
Так что это и есть самый очевидный вариант)
источник

zl

ziggy lucid in Go-go!
x-foby
var buffer bytes.Buffer
Это структура с трёмя полями, нулевые значения которых итак готовы к работе)
Так что это и есть самый очевидный вариант)
еще несколько дней назад я и не догадывался, что nil-срез сразу готов к работе
думал, что его использование неминуемо приведет к панике, что логично
источник

p

pragus in Go-go!
Roman Sharkov
я лично обычно предпочитаю b := new(bytes.Buffer)
Ещё скажи new(sync.Mutex)
источник

RS

Roman Sharkov in Go-go!
pragus
Ещё скажи new(sync.Mutex)
зачем?
источник

zl

ziggy lucid in Go-go!
pragus
Ещё скажи new(sync.Mutex)
а я вот встречал где-то, вроде как на coursera, но не помню точно уже, что надо именно через new, иначе не будет работать
может в старых версиях так было?
источник

DP

Daniel Podolsky in Go-go!
не было
источник

DP

Daniel Podolsky in Go-go!
передавать надо по указателю, это да
источник

DP

Daniel Podolsky in Go-go!
new возвращает указатель - тоже да
источник

zl

ziggy lucid in Go-go!
еще вопрос, перед возвращение bytes.Buffer в sync.Pool его надо сбрасывать?
источник

DP

Daniel Podolsky in Go-go!
на самом деле - хороший вопрос
источник