Alexander
нет))
Alexander
минутку
Alexander
так, вот так ты похоже только поля наследуешь: type T2 T1
Alexander
https://goplay.space/#iEiIaEHt0kt
Alexander
вот это я имел в виду)
Alexander
то есть да, мы вызвали метод из Т2, объявленный в Т1. но он чихать хотел на то, что мы "переобъявили" другой метод. на самом деле t2.PrintFieldSpecial() то же что t2.T1.PrintFieldSpecial()
Alexander
не понял
Alexander
смотри, название метода String никак не связано с названием типа string. есть интерфейс Stringer и он где-то применяется, и возможно тебе показалось, что int начал вести себя как string
Alexander
https://www.google.ru/search?ie=UTF-8&q=golang%20stringer%20interface
Alexander
кстати, спасибо за вопрос. практикой для себя закрыл до конца, что значит type X Y
Alexander
как в visual studio code подавить линтер, не хочу желтый файлик иметь
Alexander
Alexander
//nolint перед строкой и за строкой пробовал
Alexander
в sync.Pool кладу слайс короче
Alexander
1.17 версия
Alexander
такой вопрос по sql.DB:
вот я делаю db.BeginTx(ctx,nil). нужно ли дальше вместо tx.Prerare делать tx.PrepareContext, а вместо stmt.Exec, делать stmt.ExecContext?
Alexander
что-то масло масляное получается
Alexander
типа такого выходит, нельзя упростить? https://goplay.space/#q_b4FNN6QYE
Shaplin
При make run выходит следующее:
panic: duplicate metrics collector registration attempted
goroutine 1 [running]:
github.com/prometheus/client_golang/prometheus.(*Registry).MustRegister(0x14000180dc0, 0x14000503570, 0x1, 0x1)
/Users/vshaplin/go/pkg/mod/github.com/prometheus/client_golang@v1.11.0/prometheus/registry.go:403 +0xb0
Как понять какой пакет выдает такое?
Alexander
Это весь стек трейс?
Alexander
Поищи где у тебя импортируется нижний пакет. Может два раза MustRegister вызывается. Может это не в твоих пакетах
Alexander
Можно через отладку: докопаться до нужного пакета и поставить точку останова
Alexander
То бишь внутри метода MustRegister. И сможешь стек трейсы смотреть
Алексей
Подскажите пожалуйста. Я использую метод db.pingwithcontext. Создаю контекст с таймаутом в 2 секунды. Вызываю метод с заранее недоступной базой и он висит гораздо больше чем у секунды. Oracle/godror. Я что то делаю не так или это проблема драйвера/бд
Alexander
Код в студию
Нат
а есть тут кто-то, кто под дебиан отлаживал?
Нат
с винды
Алексей
``package main
import (
"context"
"database/sql"
"fmt"
"log"
"time"
_ "github.com/godror/godror"
)
func main() {
db, err := sql.Open("godror", user="scott" password="tiger" connectString="dbhost:1521/orclpdb1")
if err != nil {
log.Fatal(err)
}
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
timestamp := time.Now()
err = db.PingContext(ctx)
if err != nil {
fmt.Println(err)
}
fmt.Println(time.Since(timestamp))
}
``
Alexander
версия гоу какая?
Алексей
Alexander
тогда надо issue заводить
Алексей
Там ещё интересно получается, что после первого долгого протупа на пинге бд, все остальные моментально с ошибкой возвращаются
Алексей
Эксперименты
Алексей
А никак это время ни на что не влияет, оно в итоге константно
Алексей
Ну то есть что с контекстом что без него, что с 2 секундами что с 10
Алексей
Алексей
45 секунд реальное время при любом таймауте
Alexander
я же говорю, пиши issue на гитхабе. даже если проблема где-то в твоей инфрастктуре, контракт есть контракт. а он нарушен
Alexander
если не используется, то хотя бы упоминание в ридми должно быть
Алексей
Исходный код пакета я не смотрел
Алексей
Я не знаю как они реализовывают стандартный интерфейс работы с бд
Алексей
Ну то есть я не исключаю что разрабы могут игнорировать использование параметра
Alexander
я к тому, что они должны репо поправить так или иначе или предложить Алексею багфикс на откуп
Maxim
dbhost:1521/orclpdb1?connect_timeout=2
Maxim
Maxim
Alexander
После этого pingcontext запускаете
так контекст тут вообще сбоку сприпеку получается. и еще раз, если какая-то вещь не работает, об этом должно быть написано или она должна сразу возвращать ошибку, что не реализовано, на крайняк падать с паникой
Maxim
Maxim
Есть уровень драйвера Оракл у него свои правила, часть, как я написал, меняется через connection string, дальше уровень работы через GO, он тоже работает, но уже по ходу взаимодействия с БД
Alexander
Alexander
ну это ж база совсем. может что-то непонятно?
Алексей
Вообщем ответили мне на issue по поводу контекстов и таймаутов
Алексей
Таймаут этого контекста ограничивает время выполнения внутренних функций пинга, время установления соединения не входит в этот интервал и контекст не прерывает попытку установления соединения по истечению таймаута
Alexander
апну свои вопросы. может не придется идти на stackoverflow
Alexander
1==================================
Alexander
как в visual studio code подавить линтер, не хочу желтый файлик иметь
Alexander
Alexander
//nolint перед строкой и за строкой пробовал
Alexander
2=====================================
Alexander
такой вопрос по sql.DB:
вот я делаю db.BeginTx(ctx,nil). нужно ли дальше вместо tx.Prerare делать tx.PrepareContext, а вместо stmt.Exec, делать stmt.ExecContext?
Alexander
что-то масло масляное получается
Alexander
типа такого выходит, нельзя упростить? https://goplay.space/#q_b4FNN6QYE
Alexander
спасибо
Alexander
мне как раз первое нужно
Maxim
Maxim
Над строкой
Alexander
спасибо большое, надо было еще после SA6002 через пробел добавить что-то вроде причины
Maxim
Да
Maxim
//nolint:staticcheck или //nolint не очень решение, лучше тушить конкретную причину линтера
Miroslav
Что-то не могу нагуглить как сделать atomic массив (ну или слайс) uint8.
atomic типов, как я понял, в го нет. Следовательно массив atomic uint8 создать нельзя, да?
Надо как-то atomic.Load использовать для чтения батика из массива?
Alexander
Alexander
вообще твоя задача решается мьютексом
Miroslav
Мне только атомарность нужна. Мьютекс на весь массив жестко по времени может быть. Мьютекс на каждый байт жестко по памяти
Alexander
RWMutex не решит?
Alexander
Ты либо переоцениваешь потребность в одновременном доступе к данным, либо у тебя алгоритм не оптимально раскидывает данные (например, вместо передачи кусков разным горутинам, ты каждое число передаешь). Может ошибаюсь. В чем задача?