
Alexander
11.07.2018
18:16:57
я начинал с https://tour.golang.org/, немного полистал Донована, и понял, что без реальной интересной задачи толку будет 0

Vasily Romanov
11.07.2018
18:23:54
...)
https://www.coursera.org/learn/golang-webservices-1
https://www.coursera.org/learn/golang-webservices-2

Иван
11.07.2018
18:27:48

Google

Denis
11.07.2018
20:08:48
Подскажите, пожалуйста, почему я не могу так кастить:
type UserBase struct {
UserId uint64
Name string
}
type User struct {
UserBase
InvitedBy *UserBase
}
func getUser(userId uint64) *User {...}
user := getUser(123)
userBase := UserBase(user) // хочу извлечь только UserBase-составляющую

Aleksandr
11.07.2018
20:09:42
так user не userbase

Denis
11.07.2018
20:11:34

Aleksandr
11.07.2018
20:12:10
ничего страшного

Denis
11.07.2018
20:12:10
Внутри любого User точно имеется UserBase

Aleksandr
11.07.2018
20:12:20
кастинг что такое?

Denis
11.07.2018
20:13:14
Попытка интерпретировать кусок памяти не так, как задекларировано прежде, а по-новому

Aliaksandr
11.07.2018
20:14:32
ub := &user.UserBase

Denis
11.07.2018
20:15:21
Нее, мне не достать св-во нужно, а интерпретировать User как UserBase

Aleksandr
11.07.2018
20:15:28
нельзя
user не userbase

Denis
11.07.2018
20:15:42
Оке. Если это номальное поведение, и я тут не опечатался, то прошу подсказку. Как организовать что-то типа наследования в этом случае?

Aleksandr
11.07.2018
20:16:00
нет наследования. есть встраивание

Google

Aleksandr
11.07.2018
20:16:10
и интерфейсы

Denis
11.07.2018
20:24:22
Суть такая. Есть юзеры. Некоторых из них пригласили другие юзеры. Мне это нужно хранить. Глубина вложенности >1 не интересует. Я бы сделал даже так:
type User struct {
UserId uint64
Name string
InvitedBy *User
}
Но получается цикличная ссылка

Aleksandr
11.07.2018
20:26:51
почему цикличная? сам себя пригласил?

Denis
11.07.2018
20:29:42
В структуре User есть свойство типа User

Alexey
11.07.2018
20:29:48
Всем привет! Помогите пожалуйста решить следующу. проблему:
Пробую использовать пакет https://github.com/Masterminds/squirrel
Формирую запрос следующим образом:
query := sq.Insert("exchanges_data").
Columns("exchange_name", "left_coin", "right_coin", "bid", "ask", "min_trade_volume", "created_at")
for _, dataItem := range data {
query = query.Values(
exchangeName,
dataItem.LeftCoin,
dataItem.RightCoin,
dataItem.Bid,
dataItem.Ask,
dataItem.MinTradeVolume,
timeOfGetData)
}
res, err := query.RunWith(db.DB()).Exec()
if err != nil {
fmt.Println("Error: " + err.Error())
}
В итоге получаю следующюю ошибку
Error: pq: syntax error at or near ","
Вывел запрос через fmt.Println(query.ToSql())
Получаю вот такую строку INSERT INTO exchanges_data (exchange_name,left_coin,right_coin,bid,ask,min_trade_volume,created_at) VALUES (?,?,?,?,?,?,?)
Вроде бы всё стандартно. Где я допустил ошибку?


Aleksandr
11.07.2018
20:30:29
Всем привет! Помогите пожалуйста решить следующу. проблему:
Пробую использовать пакет https://github.com/Masterminds/squirrel
Формирую запрос следующим образом:
query := sq.Insert("exchanges_data").
Columns("exchange_name", "left_coin", "right_coin", "bid", "ask", "min_trade_volume", "created_at")
for _, dataItem := range data {
query = query.Values(
exchangeName,
dataItem.LeftCoin,
dataItem.RightCoin,
dataItem.Bid,
dataItem.Ask,
dataItem.MinTradeVolume,
timeOfGetData)
}
res, err := query.RunWith(db.DB()).Exec()
if err != nil {
fmt.Println("Error: " + err.Error())
}
В итоге получаю следующюю ошибку
Error: pq: syntax error at or near ","
Вывел запрос через fmt.Println(query.ToSql())
Получаю вот такую строку INSERT INTO exchanges_data (exchange_name,left_coin,right_coin,bid,ask,min_trade_volume,created_at) VALUES (?,?,?,?,?,?,?)
Вроде бы всё стандартно. Где я допустил ошибку?
посгрес?


Denis
11.07.2018
20:32:15

Alexey
11.07.2018
20:32:21

Aleksandr
11.07.2018
20:32:39
Да
биндинг вот такой в db/sql $1, $2, $3
но я не знаю, может squirell под капотом что-то делает дополнительно

Alexey
11.07.2018
20:33:34

Aleksandr
11.07.2018
20:33:41

Alexey
11.07.2018
20:34:43
да
Осталось только разобраться как это сделать для squirel, документация конечно скудновата)) Попробую почитать исходдники

Aleksandr
11.07.2018
20:35:35
ищи в ридми

Alexey
11.07.2018
20:36:06
ищи в ридми
Да, всё супер! Порешалось установкой формата заполнителя. Ещё раз спасибо за помощь

Google

Denis
11.07.2018
20:40:16

Demian
11.07.2018
21:20:06
народ кто нить работал с url.query? как сложить в структуру данные полученные в гет запросе, притом некоторые параметры могут быть пустыми

Aleksandr
11.07.2018
21:31:24

Алексей
11.07.2018
21:36:40
как мне нужно назвать структуру если она динамическая"1219": {
"order": 25300,
"name": "бла бла",
"type_site": 2,
"is_dop_stat": 0,
"data": {
"97511568": {
"blocks": {
"T": {
"Tm": {
"1219": {
"order": 25300,
"name": "Тотал по картам",
"type_site": 2,
"is_dop_stat": 0,
"data": {
"97511568": {
"blocks": {
"T": {
"Tm": {

Kirill
11.07.2018
21:37:21
var crazyshit map[string]interface{}

Алексей
11.07.2018
21:38:55
Crazy map[int]Crazy`json:"crazy"`
sps ogromnoe

Kirill
11.07.2018
21:39:49
"13123" - не int
а при Crazy map[int]Crazy ты не достанешь никогда реальное значение
это строго бесконечная вложенность

Алексей
11.07.2018
21:40:32
точно спасибо

Kirill
11.07.2018
21:40:37
для этого interface{}

Алексей
11.07.2018
21:40:43
завтыкал)
спасибули

Kirill
11.07.2018
21:41:14
геморрой такой, что никогда не окупится

Алексей
11.07.2018
21:42:04
я просто джун который делает хоть что то
а сори ! я даже не джун))
мне сейчас главное пробывать а там получиться не получиться уже не важно наберусь опыта

Google

Kirill
11.07.2018
21:44:37
ну вот такую структуру данных делать точно не надо, если есть возможность не делать так

Roman
11.07.2018
21:45:39

Kirill
11.07.2018
21:47:46

Roman
11.07.2018
21:49:30

Kirill
11.07.2018
21:50:12

Roman
11.07.2018
21:51:42
pleasekillmenowwhatafuckingshamethisiscrazyfuckingpeaceofshit
а если это название метода тогда вообще весело:
// PleaseKillMeNowWhataFuckingShameThisIsCrazyFuckingPeaceOfShit instructs the program to kill the author of this crazy fucking piece of shit code that's also a fucking shame
func (f *FuckingPieceOfShitFactory) PleaseKillMeNowWhataFuckingShameThisIsCrazyFuckingPeaceOfShit() {}

Admin
ERROR: S client not available

Kirill
11.07.2018
21:53:27
не, если это метод, то там еще ресивер будет

Daniel
12.07.2018
00:00:30
какой все-таки мерзостный язык С, а...
я тут вынужден возиться с нетривиальным кодом, и чет прям утомительно

Kirill
12.07.2018
04:51:30

Daniel
12.07.2018
05:30:12
Да все как обычно.
Цепочки инклюдов, циклические инклюды, отсутствующие инклюды (и тогда порядок инклюда в третий файл роляет), конфликтующие инклюды, макросы с одинаковыми именами и разным поведением, переопределяемые в инклюдах.
Вся вот эта мерзость. Я уж и забыл, почему с++ именно си-плюс-плюс

Zaur
12.07.2018
07:10:18
??

User
12.07.2018
07:13:42

Zaur
12.07.2018
08:32:53

Мерлин
12.07.2018
08:38:35
https://github.com/cosmos72/gomacro

Kirill
12.07.2018
08:41:59

Oleg
12.07.2018
08:48:49
кто какой DI для Go использует?

Илья
12.07.2018
08:51:13
замыкание - лучший DI

Google

Alexander
12.07.2018
08:52:22

Lesha
12.07.2018
08:58:10
вот да, постоянно вижу в чатике про go di. Вопрос - зачем вам нужна эта магия?

Egor
12.07.2018
08:58:55
в go di не особо нужен

Aleksandr
12.07.2018
08:59:54

Jentry
12.07.2018
08:59:58

Alexander
12.07.2018
09:00:24
воообще, если вам в го понадобился DI контейнер, то у вы
1) выбрали не тот язык программирования
2) у вас проблемы с архитектурой

Jentry
12.07.2018
09:00:48

Alexander
12.07.2018
09:01:00

Jentry
12.07.2018
09:01:42
читай выше
напомни, чье высказывание и почему я должен его читать?

Lesha
12.07.2018
09:02:33

Alexander
12.07.2018
09:02:49

Aleksandr
12.07.2018
09:03:05

Jentry
12.07.2018
09:03:19

Lesha
12.07.2018
09:05:11
ты что-то с чем-то спутал
ну вот беру первый репозиторий из гугла по запросу golang di
https://github.com/sarulabs/di
ctn := builder.Build()
obj := ctn.Get("my-object").(*MyObject)
ну хз такое удобство

Aleksandr
12.07.2018
09:05:36
пару дней назад я приводил свой пример di без dic