Size: a a a

2020 February 15

AY

Alex Yu in Go-go!
Yevhenii
Я это понимаю. Я имею ввиду, как подход лучше? Или это тоже надо смотреть в контексте? В жабе какой-нибудь только 2 вариант возможен по понятным причинам (ну давай массивы не брать в счет), а тут есть выбор. Ну мне кажется, что 2 вариант удобнее, ибо в конечном коде будет только одна строчка, а не две (объявление переменной и вызов метода), я что-то упускаю?
Никакой не лучше, они просто разные

http-запрос www.google.com
или
www.google.com/search?q=(param)

Какой из них лучше?
источник

Y

Yevhenii in Go-go!
Dmitry M
Копирование указателя и копирование структуры. Первый способ имеет смысл делать после профилирования приложения.
А если мы будем возвращать *types.Chat?
источник

DM

Dmitry M in Go-go!
Yevhenii
А если мы будем возвращать *types.Chat?
Смотри escape analysis golang. Тогда структура будет создана в куче
источник

Y

Yevhenii in Go-go!
Alex Yu
Никакой не лучше, они просто разные

http-запрос www.google.com
или
www.google.com/search?q=(param)

Какой из них лучше?
var chat Chat
db.First(&chat)

chat := db.First()


Мы же тут в итоге одно и тоже получим, но разные подходы, я про это
источник

AP

Anton Patsev in Go-go!
Есть у кого-нибудь контакт Витали Левченко? расшифровываю доклад "Go vs Python"
источник

AY

Alex Yu in Go-go!
А!
Так вопрос: "мутировать или создавать"?
Лучше создавать, но это не железобетонное правило на все случаи
источник

Z

Zver in Go-go!
Yevhenii
В чем преимущество Get(c *types.Chat) error перед Get() (types.Chat, error)?
Если каждый раз создаётся, то лучше возвращать. Если что-то менять надо в данных, то ссылку передавать.
источник

AP

Alexey Palazhchenko in Go-go!
Anton Patsev
Есть у кого-нибудь контакт Витали Левченко? расшифровываю доклад "Go vs Python"
источник

VL

Vitaliy Levchenko in Go-go!
Anton Patsev
Есть у кого-нибудь контакт Витали Левченко? расшифровываю доклад "Go vs Python"
спрашивай;)
источник

Y

Yevhenii in Go-go!
Dmitry M
Смотри escape analysis golang. Тогда структура будет создана в куче
Читаю на эту тему, и не понимаю почему это так работает

 a := new(int)
b := new(int)
Тут только в стэке, в кучу мы не лезем

 a := new(int)
fmt.Println("value of a: ", a)
b := new(int)
А тут 'a' вдруг в куче. В гайде написано Means ‘a’ needs to be shared across the function stack frames [between main() and Println()], но все равно не понимаю, зачем выходить за пределы стека?
источник

Z

Zver in Go-go!
Yevhenii
Читаю на эту тему, и не понимаю почему это так работает

 a := new(int)
b := new(int)
Тут только в стэке, в кучу мы не лезем

 a := new(int)
fmt.Println("value of a: ", a)
b := new(int)
А тут 'a' вдруг в куче. В гайде написано Means ‘a’ needs to be shared across the function stack frames [between main() and Println()], но все равно не понимаю, зачем выходить за пределы стека?
Может и не выйти, с новым версиями улучшают эскейп анализ.
источник

Y

Yevhenii in Go-go!
Zver
Может и не выйти, с новым версиями улучшают эскейп анализ.
Статья сентябрь 2019, так что, думаю, инфа довольно свежая. Так это несовершенство эскейп анализа?
источник

Z

Zver in Go-go!
Yevhenii
Статья сентябрь 2019, так что, думаю, инфа довольно свежая. Так это несовершенство эскейп анализа?
Возможно. Но зависит ещё от проведения принта, что он там делает. Хотя а на вряд ли куда-то уходит на сторону.
источник

DM

Dmitry M in Go-go!
Проблема указателей, это GC, который их потом проверяет
источник

Z

Zver in Go-go!
Опять же статья по какой версии написана интересно.
источник

а

а кто это in Go-go!
Yevhenii
Читаю на эту тему, и не понимаю почему это так работает

 a := new(int)
b := new(int)
Тут только в стэке, в кучу мы не лезем

 a := new(int)
fmt.Println("value of a: ", a)
b := new(int)
А тут 'a' вдруг в куче. В гайде написано Means ‘a’ needs to be shared across the function stack frames [between main() and Println()], но все равно не понимаю, зачем выходить за пределы стека?
потому что принтлн принимает интерфейсы
источник

Y

Yevhenii in Go-go!
Zver
Опять же статья по какой версии написана интересно.
Ни слова. Вот ссылка
источник

Z

Zver in Go-go!
Dmitry M
Проблема указателей, это GC, который их потом проверяет
Не всегда. Если указатель на стек, то он не попадает gc по идее.
источник

Y

Yevhenii in Go-go!
а кто это
потому что принтлн принимает интерфейсы
А, вот это уже очень даже логично, ведь интерфейсы имеют только динамический размер, да?
источник

а

а кто это in Go-go!
Yevhenii
А, вот это уже очень даже логично, ведь интерфейсы имеют только динамический размер, да?
вроде недавно разбирали интерфейсы
источник