go- все статьи тега


Время HTTP ответа в Go

В моей программе Go я сделал несколько HTTP-запросов, и мне нужно время Время ответа (а не время запроса). Вот мой текущий код (время запроса времени): func Get() int { start := time.Now() result, err := http.Get("http://www.google.com") if err != nil { log.Fatal(err) } defer result.Body.Close() elapsed := time.Since(start).Seconds() log.Println(elapsed) return result.StatusCode } На самом деле, этот код покажет что-то о времени запроса 5s, включая р ...

Доступ к вложенной карте типа map[string]interface{} в Golang

Итак, я пытаюсь разобрать ответ JSON. Он может быть на несколько уровней глубже. Вот что я сделал: var result map[string]interface{} json.Unmarshal(apiResponse, &result) Во-первых, правильно ли это делать? Предположим, что ответ был следующим: { "args": { "foo": "bar" } } Чтобы получить доступ к ключу foo, я увидел игровую площадку , делающую это: result["args"].(map[string]interface{})["foo"] Здесь, что такое .() обозначение? Это правильно? ...

Сколько goroutines запускаются по умолчанию в программе Go?

package main import ( //"time" "runtime" "fmt" ) func main() { //time.Sleep(100 * time.Millisecond)//By adding this number of goroutine increases fmt.Println(runtime.NumGoroutine()) } Я пытаюсь выяснить количество горотинов в программе. Мой код находится здесь . При кодировании этого я заметил, что по умолчанию число goroutines равно 4. Для меня: main-это один горутин сборщик мусора-это один горотин Каковы остальные? , добавив время .Сон (выше), число горотинов увели ...

экспортируемые поля в неэкспортируется struct в golang

Пример: type myType struct { foo []float64 Name string } myType не экспортируется, но поле Name в нем экспортируется. Есть ли в этом смысл это делать? Это считается плохой практикой? У меня есть что-то вроде этого, и он прекрасно компилируется. И я могу получить доступ к полю Name, если создам экспортированный массив myType var MyArray []myType = {... some initialization } fmt.Println(MyArray[0].Name) // Name is visible and it compiles!! ...

Go Язык Программирования Взаимное Параллельное Выполнение

У меня есть две параллельные процедуры go, как показано ниже, Routine 1{ routine procedure critical section{ } routine procedure } Routine 2{ routine procedure critical section{ } routine procedure } Возможно ли с помощью некото ...

Как определить, какое сообщение об ошибке я должен вернуть из golang API?

У меня есть API GoLang со СПА, чтобы использовать его. Что я делаю с ошибками в моем API, так это возвращаю их до обработчика, где я проверяю, существует ли ошибка из предыдущих функций. Если есть ошибка, я помещаю ее в тело ответа, устанавливаю код состояния на 400 или 500, а затем возвращаю ответ В функции обработчика, чтобы иметь возможность создать четкое сообщение на стороне клиента, мне нужно знать, какая ошибка была возвращена, как это сделать? Я знаю о типах ошибок, но я читаю о рекоме ...

golang, вызов функции GetVolumeInformation winapi

Пытается вызвать функцию GetVolumeInformation из golang. Хотите получить имя Тома. Используйте спецификации api: BOOL WINAPI GetVolumeInformation( _In_opt_ LPCTSTR lpRootPathName, _Out_opt_ LPTSTR lpVolumeNameBuffer, _In_ DWORD nVolumeNameSize, _Out_opt_ LPDWORD lpVolumeSerialNumber, _Out_opt_ LPDWORD lpMaximumComponentLength, _Out_opt_ LPDWORD lpFileSystemFlags, _Out_opt_ LPTSTR lpFileSystemNameBuffer, _In_ DWORD nFileSystemNameSize ); Используйте код: // ...

Как взломать длинную строку кода в Golang?

Исходя из Python, я не привык видеть строки кода длиннее 80 столбцов. Поэтому, когда я сталкиваюсь с этим: err := database.QueryRow("select * from users where user_id=?", id).Scan(&ReadUser.ID, &ReadUser.Name, &ReadUser.First, &ReadUser.Last, &ReadUser.Email) Я попытался разбить его на err := database.QueryRow("select * from users where user_id=?", id) .Scan(&ReadUser.ID, &ReadUser.Name, &ReadUser.First, &ReadUser.Last, &ReadUser.Email) Но я ...

Не удается подключиться к postgresql, который находится внутри контейнера docker

Я пишу приложение go, которое dockerized в 2 контейнерах: db и app. При запуске контейнеров 'docker-compose up' я вижу сообщение: наберите tcp: lookup dbpgsql на 127.0.0.11: 53: Нет такого хоста DB_ENV_DB=cldb DB_ENV_USER=cldb DB_ENV_PASS=cldb DB_PORT_5432_TCP_ADDR=dbpgsql DB_PORT_5432_TCP_PORT=5432 Вот моя докер-композиция.yml version: '2' services: server: hostname: app image: golang:1.7.3-alpine build: ./server/ privileged: true container_name: server command: ...

gocql SELECT * возвращает не все столбцы

Я столкнулся с этим странным поведением, пытаясь реализовать некоторые счетчики для моего приложения. В принципе, я сделал таблицу счетчиков так: CREATE TABLE stats_dev.log_counters ( date text PRIMARY KEY, all counter ); Затем у меня есть несколько конкретных типов сообщений, которые я тоже хочу считать, поэтому в моем приложении Go я изменяю таблицу, чтобы добавить столбец, которого у меня раньше не было. Мое приложение растет, и я начинаю иметь более 30 столбцов (не должно быть боль ...

Как извлечь метку времени unix и получить дату

У меня есть целое число x := 1468540800 Я хочу извлечь дату из этой временной метки unix в Golang. Я пробовал time.ParseDuration , но похоже, что это не правильный способ извлечь дату из этого. Разговор должен происходить вот так http://www.unixtimestamp.com/index.php Я намерен конвертировать в формат ISO 8601, возможно. Мне нужна строка типа 2016-09-14. ...

Как вы определяете время выполнения функции в Go и возвращаете ее время выполнения в миллисекундах?

Как вы определяете время выполнения функции в Go и возвращаете ее время выполнения в миллисекундах? ...

идти всегда устанавливайте попытки использовать GOPATH и GOROOT не указан в списке идут ОКР

У меня есть довольно неприятная проблема с GOPATH, которая, несмотря на то, что она установлена в .profile, не появляется при вызове go env и, похоже, не влияет на целевое местоположение go install. Я пытаюсь использовать go install для установки пакетов, и получаю эту ошибку, которая ясно показывает, что он пытается установить в /usr/lib/go, а не в предназначенном каталоге /home/me/dev/go. $ go install github.com/songgao/colorgo go install github.com/songgao/go.pipeline: mkdir /usr/lib/go/pkg ...

Звоню мыло с Golang

Я новичок в golang и пытаюсь сделать звонок soap с gowsdl. Я сгенерировал код wsdl и установил его в виде пакета. Однако я изо всех сил пытаюсь понять синтаксис для вызова метода из него. Когда я изучаю упаковку, это то, что я хочу в теле мыла: type AccountUser struct { XMLName xml.Name `xml:"http://exacttarget.com/wsdl/partnerAPI AccountUser"` *APIObject AccountUserID int32 `xml:"AccountUserID,omitempty"` UserID string `xml: ...

Goroutines с ListenAndServe повышает производительность?

Я не очень хорошо знаком с подпрограммами Go, но так как я работаю с маршрутизатором net/http, я несколько раз видел, чтоListenAndServe() обернут подпрограммой go. Сервер должен быть способен обрабатывать несколько запросов одновременно из коробки, чтобы быть эффективным. Так зачем идти процедуры, как легкие нити используются? Обеспечивает ли параллелизм какие-либо преимущества? Вот пример OpenShift package main import ( "fmt" "net/http" ) func helloHandler(w http.ResponseWriter, ...

Golang, goroutines: паника: ошибка выполнения: неверный адрес памяти

Я довольно новичок в golang, и пытаюсь понять основные принципы и написать код на основе gouroutines, используя chanels. В других языках, которые я использовал, не было таких инструментов, и я удивляюсь, получая такие ошибки, как паника... Мой код: package main import "fmt" import ( "time" ) type Work struct { x,y,z int } func worker(in <-chan *Work, out chan<- *Work){ for w := range in { w.z = w.x + w.y time.Sleep(time.Duration(w.z)) out <-w ...

Golang преобразование строки в int64

Я хочу преобразовать строку в int64. То, что я нахожу в пакете strconv, является функцией Atoi. Похоже, что он приводит строку к int и возвращает ее: // Atoi is shorthand for ParseInt(s, 10, 0). func Atoi(s string) (i int, err error) { i64, err := ParseInt(s, 10, 0) return int(i64), err } Синтаксический анализ фактически возвращает int64: func ParseInt(s string, base int, bitSize int) (i int64, err error){ //... } Итак, если я хочу получить int64 из строки, следует ли мн ...

Как эффективно объединить строки в Go?

В, а string является примитивным типом, что означает, что он доступен только для чтения, и каждая манипуляция с ним создаст новую строку. Итак, если я хочу объединить строки много раз, не зная длины результирующей строки, каков наилучший способ сделать это? наивный способ будет: s := "" for i := 0; i < 1000; i++ { s += getShortStringFromSomewhere() } return s но это не кажется очень эффективным. ...

Как проверить, содержит ли карта ключ в go?

Я знаю, что могу перебирать карту m by, for k, v := range m { ... } и искать ключ, но есть более эффективный способ проверки существования ключа в map? Спасибо. Я не мог найти ответ в язык спецификаций. ...