Anonymous
Они дали оценку в разговоре чуть позднее 2018 года
Anonymous
Когда все критичные issues будут исправлены
Anonymous
С памятью, возможными ошибками, багами
Anonymous
Когда сможет появится уже не альфа на свет
Anonymous
А вполне себе бета для употребления
Maxim
это не значит, что его сразу в прод возьмут
Anonymous
это не значит, что его сразу в прод возьмут
Гошечку сейчас до сих пор называют молодым языком и говорят, что в прод тащить не будут.
Зависит от того, на сколько язык подходит под задачи, некоторые гошечку перли в прод даже до 1-й версии.
Anonymous
Все люди разные и мотивы их тоже.
Anonymous
Мне лично сейчас там не хватает пекедж менеджера и его стабилизации в RFC
Anonymous
Сейчас только есть подобие данного менеджера от одного из кор разрабов
Anonymous
Чисто для того, чтобы можно было подключать пакеты с гитхаба
Ivan
Anonymous
Есть такие упрямые полудурки, которые считают, что лишь ява со своим многотысячнолетним опытом готова к проду )
Anonymous
В остальном я пробовал уже переписывать свои вещи на поняшку, и не хватает еще следующих вещей:
- Внешние тулзы по типу gofmt, но сейчас там нету AST пакета для разбора синтаксиса, они тоже его планируют завезти.
- Нативных пакетов (Без подключения библиотек через FFI)
- Банальных исправлений багов (Натыкался на 2-3 issue существующих самолично, когда писал проект)
Anonymous
В остальном все прекрасно, RFCs появляются, фичи добавляются
Anonymous
Стабилизация растет
Anonymous
Сам язык прекрасно задуман с его акторной моделью
Daniel
Anonymous
Они сами придерживаются идеалогии Go по поводу пекедж менеджера
Anonymous
Тоже хотят децентрализации
Anonymous
Так что существующий тоже работает с гитом
Michael
go get
dep
gopkg.in
чего ещё не хватает?
Anton
ох, опять вы про пакеты... :)
Anton
у меня иногда складывается ощущение, что людям не нравится go get, потому что люди не хотят -d флаг. люди хотят сразу устанавливать все что там в наборе...
а еще наверное ходить по репозиториям с исходниками в vendor папке сложно.. а еще сложнее сделать git checkout нужного тега
но вероятно вопрос на самом деле ставиться должен не об "убогости" инструмента, а о том, что не все разработчики следуют какому-то единому "go way" когда публикуют свои поделки на github
Anatoly
Последнее верно
Aleksandr
выводишь значение атрибута, а надо вывести значение ноды, если нашел подходящий атрибут
Taras 🦀
Taras 🦀
выводишь значение атрибута, а надо вывести значение ноды, если нашел подходящий атрибут
var f func(*html.Node)
f = func(n *html.Node) {
if n.Type == html.ElementNode && n.Data == "td" {
for _, k := range n.Attr {
if k.Key == "id" {
//fmt.Println(k.Val)
//fmt.Println(k)
fmt.Println(n)
break
}
}
}
for c := n.FirstChild; c != nil; c = c.NextSibling {
f(c)
}
}
f(doc)в результате
&{0xc0421a03f0 0xc0421a0690 0xc0421a0690 0xc0421a05b0 0xc0421a0700 3 td td [{ id test}]}
такое падает, что с ним делать? где тут значение?)
Илья
попробуй fmt.Printf("%+v",*n)
Илья
:)
Aleksandr
Taras 🦀
попробуй fmt.Printf("%+v",*n)
{Parent:0xc0421ba3f0 FirstChild:0xc0421ba690 LastChild:0xc0421ba690 PrevSibling:0xc0421ba5b0 NextSibling:0xc0421ba700 Type:3 DataAtom:td Data:td Namespace: Attr:[{Namespace: Key:id Val:test}]}
я все-равно не нашел 777 и не понял что делать дальше))
Aleksandr
видимо <td ...> text </td> - это три разных ноды, соотстветственно в твоем случае после найденного id надо брать n.NextSibling или что-то такое
Dmitriy / დიმიტრი
Если я перебираю все значения внутри map что бы вывести их на экран и одновременно с этим какая-то из горутин менят map, вызовет ли это какие-то проблемы?
Допустим мне не важно изменился ли map или нет, мне важно вывести данные которые в нем были во время начала цикла.
Taras 🦀
{0xc0421d2770 <nil> <nil> 0xc0421d29a0 0xc0421d2af0 1
[]}
такое получается
Илья
Ivan
Можно копить изменения в очереди, пока вывод на экран не завершится.
Aleksandr
{0xc0421d2770 <nil> <nil> 0xc0421d29a0 0xc0421d2af0 1
[]}
такое получается
func parse() string {
h := `<html><body><td id="test">777</td></body></html>`
r := strings.NewReader(h)
isOpened := false
d := html.NewTokenizer(r)
for {
// token type
tokenType := d.Next()
if tokenType == html.ErrorToken {
return ""
}
token := d.Token()
switch tokenType {
case html.StartTagToken:
for _, k := range token.Attr {
if k.Key == "id" && k.Val == "test" {
isOpened = true
}
}
case html.TextToken:
if isOpened == true {
return token.Data
}
}
}
return ""
}
Taras 🦀
благодарю, сейчас попробую и изучу
кстати еще вопрос -
в го есть разница между "string" , 'string' и `string ` ?
Sergey
всем привет
новичок в го
какую литературу посоветуете ?
Oleksii
https://tour.golang.org/
https://golang.org/doc/effective_go.html
https://gobyexample.com/
The Go Programming Language
Sergey
Oleksii
Должно быть
Oleksii
Язык программирования Go
Oleksii
http://www.ozon.ru/context/detail/id/34671680/
значит есть :)
Dmitry
можно вызывать методы у указателя равного nil
https://play.golang.org/p/EQzWHTZl7b
Oleksii
Anton
скинул линк в ЛС
кидай сюда. пусть в файлах повисит. вновь пришедшим проще будет
Dmitry
Taras 🦀
Oleksii
Oleksii
по этому и не скидывал в чат
Oleksii
могу сайт подсказать, а там поиском уже найти легко
Oleksii
libgen.io
Taras 🦀
Sergey
а что по поводу книги саммерфилда скажете ? стоит читать?
Илья
почитай
Oleg
http://blog.cleancoder.com/uncle-bob/2017/08/09/ThoughtPolice.html
Ответ Uncle Bob'а на увольнение программиста из гугла публиковали сюда?
Aleksandr
Илья
https://github.com/golang/go/wiki/ExperienceReports#context
Илья
хорошая подборка статей
Anonymous
Привет народ! Есть вопрос, здесь нубочат или есть шарющее в syscall'ах?
Надо другой процесс SuspenThread'нуть
Taras 🦀
код проверенный - 777 выдает.
не знаю как на винде - завтра на работе могу проверить
но на убунте просто подвисает
у меня получилось по-другому
var f func(*html.Node)
f = func(n *html.Node) {
if n.Type == html.ElementNode {
for _, k := range n.Attr {
if k.Key == "id" && k.Val == "test" {
//fmt.Printf("%s\n", n.Data)
var mnn = n.FirstChild
my_needs_value = mnn.Data
//fmt.Printf("%s\n", mnn.Data)
break
}
}
}
for c := n.FirstChild; c != nil; c = c.NextSibling {
f(c)
}
}
f(doc)
Aleksandr
Taras 🦀
кстати да) эрланг в инет стучит заметно быстрей чем го (как минимум на моем дохловатом компе)
зато с хешированиями - наоборот ))
Aleksandr
Taras 🦀
🦀 крабик только одно сообщение нашел (может другое потерялось где-то)
Aleksandr
func parse() string {
h := `<html><body><td id="test">777</td></body></html>`
r := strings.NewReader(h)
isOpened := false
d := html.NewTokenizer(r)
for {
// token type
tokenType := d.Next()
if tokenType == html.ErrorToken {
return ""
}
token := d.Token()
switch tokenType {
case html.StartTagToken:
for _, k := range token.Attr {
if k.Key == "id" && k.Val == "test" {
isOpened = true
}
}
case html.TextToken:
if isOpened == true {
return token.Data
}
}
}
return ""
}
Taras 🦀
этот код я и пробовал
Мерль
Вам нужен скорее всего SIGSTOP
Anonymous
В винде?