SHOW COLUMNS FROM mytable
для получения имен полей и их типов.[]interface{}
.SELECT col1, ... colN FROM mytable
и при обработке rows.Next()
получать сами данные, которые заполнять уже в массив структур.ctx, cancel := context.WithTimeout(r.Context(), config.Read().HTTP.Timeout.Request*time.Second)
sync.WaitGroup
.<-ctx.Done()
внутри приведенной вами функции происходит раньше, чем такое же чтение канала внутри функции router.middlewareHandler(h). Поэтому нужно ждать не отмены контекста, а завершения работы горутины.if ctx.Err() != nil {
. Но у вас вместо этого ==, что вообще обесценивает код внутри этого ифа. resp, err := http.PostForm("http://example.com/form", url.Values{"login_login": {"Value"}, "login_password": {"123"}})
Как установить этот SDK, если можно отдельно от андроид студии?
...находим раздел «Command line tools only» и скачиваем нужную версию в зависимости от вашей системы.
Создайте папку Android в корневой папке системы. В случае с Windows это локальный диск «С», а в OS X и Linux — домашняя папка пользователя. Распакуйте скачанный архив в папку Android. Для дальнейшей работы необходим установленный пакет Java на компьютере. OS X из коробки его поддерживает, чтобы проверить это, в терминале вбейте «which java», система должна выдать расположение пакета. На Windows и Linux устанавливаем JDK по этой ссылке.
Если вы используете Linux, вам понадобится установить еще несколько пакетов с помощью этой команды «sudo apt-get install lib32ncurses5 lib32stdc++6». Для других версий Linux необходимо найти подходящие пакеты ncurses5 и stdc++6.
package main
import (
"bytes"
"fmt"
"log"
"strings"
"golang.org/x/net/html"
)
func collectText(n *html.Node, buf *bytes.Buffer) {
if n.Type == html.TextNode {
buf.WriteString(n.Data)
}
for c := n.FirstChild; c != nil; c = c.NextSibling {
collectText(c, buf)
}
}
func main() {
s := `<p>Links:</p><ul><li><a href="foo">Foo</a><li><a href="/bar/baz">BarBaz</a></ul>`
doc, err := html.Parse(strings.NewReader(s))
if err != nil {
log.Fatal(err)
}
var f func(*html.Node)
f = func(n *html.Node) {
if n.Type == html.ElementNode && n.Data == "a" {
text := &bytes.Buffer{}
collectText(n, text)
fmt.Println(text)
}
for c := n.FirstChild; c != nil; c = c.NextSibling {
f(c)
}
}
f(doc)
}