@gogolang

Страница 552 из 1630
denisx
02.10.2017
08:38:18
так вот из того, с базой, не могу вытащить эти PreparedStatement, пишет Cannot use godb.Prepare("GetPageByURI", getPageByURI) (type *pgx.PreparedStatement) as type *pgx.PreparedStatement in assignment

Maxim
02.10.2017
08:39:45
ща

Мерлин
02.10.2017
08:40:09
@twentydraft func (t *Test) isInMap(p *string) (exist bool) { myMap := t.getMap() return _, exist := myMap[p] } говорит, что myMap[p] evaluated but not used
@twentydraft func (t *Test) isInMap(p *string) (exist bool) { myMap := t.getPatterns() _, exists := myMap[p] return exists }

Google
Maxim
02.10.2017
08:40:31
я там по ссылке значение передал. сейчас еще пробую

denisx
02.10.2017
08:40:35
так вот из того, с базой, не могу вытащить эти PreparedStatement, пишет Cannot use godb.Prepare("GetPageByURI", getPageByURI) (type *pgx.PreparedStatement) as type *pgx.PreparedStatement in assignment
даже вот так cannot use godb.Prepare("GetPageByURI", getPageByURI) (type *"github.com/XXX/godb/vendor/github.com/jackc/pgx".PreparedStatement) as type *"github.com/jackc/pgx".PreparedStatement in assignment

denisx
02.10.2017
08:41:05
Andrew
02.10.2017
08:41:40
Ага, что-то с вендорингом...

denisx
02.10.2017
08:42:26
пробовал наоборот, но тут go не дает, говорит залезать в вендоры пакетов нельзя

Maxim
02.10.2017
08:42:32
@twentydraft Reports assignment with no new valiables on left side подчеркивает мои _, exist в строке _, exist := myMap[p]

Maxim
02.10.2017
08:43:34
@Am1rkin Получилось, но где он был объявлен?

in favor
02.10.2017
08:43:36
У тебя именованый return аргумент

(exists bool)

Maxim
02.10.2017
08:44:15
ok, спасибо

Google
in favor
02.10.2017
08:44:20
Но это странно писать новый метод для проверки вхождения в хеш таблицу

Моё личное мнение)

Andrew
02.10.2017
08:44:33
даже вот так cannot use godb.Prepare("GetPageByURI", getPageByURI) (type *"github.com/XXX/godb/vendor/github.com/jackc/pgx".PreparedStatement) as type *"github.com/jackc/pgx".PreparedStatement in assignment
Как объявлены оба PreparedStatement? Похоже, что один тянется из вендоринга, второй из gopath.

denisx
02.10.2017
08:45:42
Как объявлены оба PreparedStatement? Похоже, что один тянется из вендоринга, второй из gopath.
и во внутреннем пакете, и во внешнем (где база), объявлено одинакого "github.com/jackc/pgx"

Maxim
02.10.2017
08:46:31
@AxiS575 я сделал return &exist , а тип возврата указал *bool

denisx
02.10.2017
08:46:47
и во внутреннем пакете, и во внешнем (где база), объявлено одинакого "github.com/jackc/pgx"
собсна, фанк такой func Prepare(name string, template string) *pgx.PreparedStatement { var statement, err = dbConnection.Prepare(name, template) if err != nil { panic(err) } return statement }

и он ошибок не пишет. а когда юзаешь пакет - ошибка что выше ?

Мерлин
02.10.2017
08:49:20
Я понимаю, что это немного не из го мира, но как хотя бы абстрактную фабрику без возвращения интерфейса сделать?
Делаешь две структуры-фабрики После этого, если тебе надо будет абстрагироваться от конкретного типа, ты можешь положить их в переменную типа SomethingFactory Или я тебя неправильно понял?

можно просто return, без exists
Как? Не мог бы привести пример?

denisx
02.10.2017
08:49:51
Мерлин
02.10.2017
08:51:11
Абстракция.
А зачем? В чём профит? Ты всегда сможешь "посмотреть" на возвращаемое значение как на интерфейс А вот наоборот сложнее

Dmytriy
02.10.2017
08:52:26
А зачем? В чём профит? Ты всегда сможешь "посмотреть" на возвращаемое значение как на интерфейс А вот наоборот сложнее
Интерфейс - это сокрытие реализации. Если мне внезапно нужно от конкретной реализации что-то такое, чего нет в интерфейсе, то мой код, скорее всего, протух.

AxiS
02.10.2017
08:52:35
Как? Не мог бы привести пример?
func (t *Test) isInMap(p *string) (exist bool) { myMap := t.getPatterns() _, exists := myMap[p] return } если имя переменной указано в возвращаемых, нет нужды дублировать ее в return

Andrew
02.10.2017
08:55:35
Иначе ругается, что вендоринги не совместимы...

Google
denisx
02.10.2017
08:56:35
Andrew
02.10.2017
08:57:31
да, это я понял. не понял только, как это сделать ?
Попробуй засунуть свой пакет во внутрь первого.

Мерлин
02.10.2017
08:59:10
func (t *Test) isInMap(p *string) (exist bool) { myMap := t.getPatterns() _, exists := myMap[p] return } если имя переменной указано в возвращаемых, нет нужды дублировать ее в return
так можно, но вообще именованый return — штука не очень хорошая, кроме случаев с перехватом паник в defer, имхо

Andrew
02.10.2017
08:59:55
да, это я понял. не понял только, как это сделать ?
godb/<твой пакет> у меня получилось, оба используют тогда общий вендоринг godb/vendor

Мерлин
02.10.2017
09:01:25
Интерфейс - это сокрытие реализации. Если мне внезапно нужно от конкретной реализации что-то такое, чего нет в интерфейсе, то мой код, скорее всего, протух.
Ну ради б-га, в функции, работающей с фабриками, принимай интерфейс Factory И опа — у тебя и сокрытие есть, и работать с конкретным типов всегда можно в случае нужды

Maxim
02.10.2017
09:08:54
В чем здесь проблема? type Test1 struct{ myString string }

Aleksandr
02.10.2017
09:09:24
здесь нет проблем

Alexander
02.10.2017
09:10:21
мозгом компилируется )

Maxim
02.10.2017
09:10:30
передаю в метод другой структуры параметр Test1.myString, содержащий строковое значение А у меня ошибка Test1 myString is not string type

Alexander
02.10.2017
09:11:36
покажи код

Димка
02.10.2017
09:11:40
@maximniko предлагаю тебе ещё раз прочитать go tour

покажи код
да видимо он вот так делает someFunc(Test1.myString) не создаёт переменную, а из типа пытается дёргать значение

Maxim
02.10.2017
09:12:39
я там принимаю s string

Aleksandr
02.10.2017
09:12:50
код покажти

Alexander
02.10.2017
09:13:09
видимо

Maxim
02.10.2017
09:13:28
type Pattern struct { number string pattern string } func main() { changer := Pattern{number: "A5555A"} changer.setPattern() types.Ua.IsThisPattern(changer.pattern) fmt.Printf("%v", changer.pattern) } ################## СЮДА ПЕРЕДАЮ type Ua struct { } func (ua *Ua) IsThisPattern(p string) *bool { myMap := ua.patterns() _, exist := myMap[p] return &exist }

Maxim
02.10.2017
09:15:52
в разных пакетах, что значит "неимпортируемое"? Я же явно передаю параметр строкового типа

Google
Aleksandr
02.10.2017
09:16:07
да. воспроизведи на play.golang

Alexander
02.10.2017
09:16:09
pattern пустой

Aleksandr
02.10.2017
09:16:20
pattern пустой
но он строка

Maxim
02.10.2017
09:16:21
не пустой

Dmytriy
02.10.2017
09:17:56
Димка
02.10.2017
09:18:22
не пустой
а у Pattern случайно нет функции pattern?

Maxim
02.10.2017
09:18:48
invalid method expression types.Ua.IsThisPattern (needs pointer receiver: (*types.Ua).IsThisPattern) types.Ua.IsThisPattern undefined (type types.Ua has no method IsThisPattern)

типа не создал types.Ua ???

Димка
02.10.2017
09:19:23
типа иди читай go tour

вопросы все оттуда

Maxim
02.10.2017
09:20:00
@Am1rkin там кроме Vertex{1,2} ничего нет по структурам!

Aleksandr
02.10.2017
09:20:02
types.Ua.IsThisPattern(changer.pattern) - вот ты юзаешь метод инстанса структуры, но до этого его (инстанс) не создал

Maxim
02.10.2017
09:20:20
я убрал указатель и имею ошибку в консоли

not enough arguments in call to method expression types.Ua.IsThisPattern have (string) want (types.Ua, string)

Daniel
02.10.2017
09:20:40
коллега

какое слово непонятно?

Daniel
02.10.2017
09:21:08
совсем-то не надо нас за бесплатного оракула карманного держать

Nick
02.10.2017
09:21:21
А зачем? В чём профит? Ты всегда сможешь "посмотреть" на возвращаемое значение как на интерфейс А вот наоборот сложнее
Стандартный пример с кофе шопом глянь. Вообще странный вопрос зачем нужны абстракции

Alexander
02.10.2017
09:22:05
var aaa = new(Ua) забыл

Google
Maxim
02.10.2017
09:23:18
я ожидаю строку func (ua Ua) IsThisPattern(p string) *bool { myMap := ua.patterns() _, exist := myMap[p] return &exist } А он хочет строку от типа types.Ua

Daniel
02.10.2017
09:23:58
коллега, у него нет фантазии. вообще. что вы ему написали - то он и хочет

Maxim
02.10.2017
09:23:59
никак преобразовать нельзя, без передачи значения через параметр?

Daniel
02.10.2017
09:24:13
что куда преобразовать?

Aleksandr
02.10.2017
09:25:09
я ожидаю строку func (ua Ua) IsThisPattern(p string) *bool { myMap := ua.patterns() _, exist := myMap[p] return &exist } А он хочет строку от типа types.Ua
play.golang. третий раз. создай заготовку - тебе допилят до рабочгео состояния. взывать к небесам прекращай

Maxim
02.10.2017
09:26:33
@zelenin я сам хочу допилить и понять, почему я в методе указываю "ЖДУ СТРОКУ!!!", а метод говорит "НЕЕТ, ТЫ ЖДЕШЬ UA sting!!!"

Aleksandr
02.10.2017
09:27:04
Maxim
02.10.2017
09:27:39
я без обрывков писал. Два пакета, один передает свой строковый параметр в метод другого

@onokonem я не туплю, а имею мало опыта с Go

Daniel
02.10.2017
09:28:05
давай без обрывков в playground

Maxim
02.10.2017
09:28:16
не дам

Aleksandr
02.10.2017
09:28:16
я без обрывков писал. Два пакета, один передает свой строковый параметр в метод другого
ок. не хочешь play.golang - заново проходи обучалки по go. серьезно, ты не знаешь как работают структуры и методы.

Mush
02.10.2017
09:28:40
я без обрывков писал. Два пакета, один передает свой строковый параметр в метод другого
тебе сложно скопипастить свой код в playground? это ж 2 кнопки нажать. а нет, 3 - когда в чат ссылку постить. никто не может тебя понять

Daniel
02.10.2017
09:28:48
не дам
тогда не обессудь - я тебя зобаню...

Dmytriy
02.10.2017
09:30:27
Стандартный пример с кофе шопом глянь. Вообще странный вопрос зачем нужны абстракции
Я так понял, мы не об одном и том же говорили. @twentydraft давай на котиках. У меня есть фабрика котиков, которая возвращает интерфейс Мурчатель. Дальше я работаю с этим мурчателем как с абстрактным котиком, а не с конкретным. Но если мне в структуре конкретного кота нужно поправить ему кишки, то внутри его я работаю с реализацией, а не с Мурчателем, верно? Если так, то это даже обсуждать не стоило, и так всё понятно

Alexander
02.10.2017
09:30:45
хорош засорять

Димка
02.10.2017
09:31:24
тогда не обессудь - я тебя зобаню...
можно просто замьютить

Страница 552 из 1630