go- все статьи тега ➜ страница 4


Преобразование интерфейса{} в int

Я пытаюсь получить значение из JSON и привести его к int, но это не работает, и я не знаю, как это сделать правильно. вот сообщение об ошибке: ...cannot convert val (type interface {}) to type int: need type assertion и код: var f interface{} err = json.Unmarshal([]byte(jsonStr), &f) if err != nil { utility.CreateErrorResponse(w, "Error: failed to parse JSON data.") return } m := f.(map[string]interface{}) val, ok := m["area_id"] if !ok { ...

Когда использовать ОС.Выход () и паника ()?

может кто-нибудь объяснить ключевые различия между os.Exit() и panic() а как они используются на практике в Go? ...

Использование импорта раздвоенных пакетов в Go

предположим, что у вас есть репозиторий в github.com/someone/repo и вы раскошелитесь на github.com/you/repo. Вы хотите использовать свою вилку вместо основного РЕПО, поэтому вы делаете go get github.com/you/repo теперь все пути импорта в этом РЕПО будут "сломаны", то есть, если в репозитории есть несколько пакетов, которые ссылаются друг на друга через абсолютные URL-адреса, они будут ссылаться на источник, а не на вилку. есть ли лучший способ, как клонирование вручную в правильном пути? gi ...

Чтение целого числа из стандартного ввода

Как я могу использовать fmt.Scanf функция в Go, чтобы получить целочисленный вход от стандартного входа? Если это не может быть сделано с помощью fmt.Scanf, каков наилучший способ чтения одного целого числа? ...

Максимальное значение для типа int в Go

Как указать максимальное значение, представимое для unsigned целочисленный тип? Я хотел бы знать, как инициализировать min в цикле ниже, который итеративно вычисляет минимальную и максимальную длины из некоторых структур. var minLen uint = ??? var maxLen uint = 0 for _, thing := range sliceOfThings { if minLen > thing.n { minLen = thing.n } if maxLen < thing.n { maxLen = thing.n } } if minLen > maxLen { // If there are no values, clamp min at 0 so that min <= max. minLen = ...

Как сравнить структуру, срез, карту равны?

Я хочу, чтобы проверить, что две структуры равны, но есть некоторые проблемы: package main import ( "fmt" "reflect" ) type T struct { X int Y string Z []int M map[string]int } func main() { t1 := T{ X:1, Y:"lei", Z:[]int{1,2,3}, M:map[string]int{ "a":1, "b":2, }, } t2 := T{ X:1, Y:"lei", Z:[]int{1,2,3}, M:map[string]int{ "a":1, "b":2, } ...

Извлечение подстрок в Go

Я пытаюсь прочитать всю строку из консоли (включая пробелы), а затем обработать ее. Используя bufio.ReadString, символ новой строки читается вместе с вводом, поэтому я придумал следующий код для обрезки символа новой строки: input,_:=src.ReadString('n') inputFmt:=input[0:len(input)-2]+"" //Need to manually add end of string есть ли более идиоматические способ сделать это? То есть, есть ли уже библиотека, которая заботится о конечном нулевом байте при извлечении подстрок для вас? (Да, я знаю ...

Преобразование float64 в int в Go

как конвертировать float64 в int в Go? Я знаю strconv пакет может использоваться для преобразования чего-либо в строку или из строки, но не между типами данных, где один не является строкой. Я знаю, что могу использовать fmt.Sprintf чтобы преобразовать что-либо в строку, а затем strconv Это тип данных, который мне нужен, Но это дополнительное преобразование кажется немного неуклюжим - есть ли лучший способ сделать это? ...

Как измерить покрытие кода в Golang?

кому-нибудь удалось создать покрытие кода для модульных тестов Go? Я не могу найти инструмент для этого в интернете. ...

Функция ToString () в Go

The strings.Join функция принимает только фрагменты строк: s := []string{"foo", "bar", "baz"} fmt.Println(strings.Join(s, ", ")) но было бы неплохо иметь возможность передавать произвольные объекты, которые реализуют a ...

Как читать файлы и stdout из запущенного контейнера Docker

Как я могу запустить приложение на моем хост-компьютере, чтобы читать файлы и stdout из работающего контейнера docker? по сути, я хочу сделать это: docker start containerid ./myapp // This app will *somehow* have access files and stdout generated by the container I just stared. Как бы я это сделал? Чтобы быть более конкретным с тем, где я пытаюсь пойти с этим; я хочу прочитать журналы и stdout контейнера docker и обработать эти журналы где-то еще. Я также готов создать еще один контей ...

Golang-что такое размер буфера канала?

Я пытаюсь создать асинхронный канал, и я смотрел на http://golang.org/ref/spec#Making_slices_maps_and_channels. c := make(chan int, 10) // channel with a buffer size of 10 что это значит, что размер буфера 10? Что конкретно представляет собой размер буфера / limit? ...

Что конкретно делает во время выполнения.Гощед делать?

на версия до выхода go 1.5 из тура Go website есть кусок кода, который выглядит так. package main import ( "fmt" "runtime" ) func say(s string) { for i := 0; i < 5; i++ { runtime.Gosched() fmt.Println(s) } } func main() { go say("world") say("hello") } вывод выглядит так: hello world hello world hello world hello world hello что меня беспокоит, когда runtime.Gosched() удаляется, программа больше не печатает "мир". hello hello hello hello hello ...

Go/Golang запись журнала в файл

Я пытаюсь записать в файл журнала С Golang. Я пробовал несколько подходов, которые провалились. Это то, что я пробовал: func TestLogging(t *testing.T) { if !FileExists("logfile") { CreateFile("logfile") } f, err := os.Open("logfile") if err != nil { t.Fatalf("error: %v", err) } // attempt #1 log.SetOutput(io.MultiWriter(os.Stderr, f)) log.Println("hello, logfile") // attempt #2 log.SetOutput(io.Writer(f)) log.Println("hello, logfile ...

Go: panic: ошибка выполнения: недопустимый адрес памяти или разыменование указателя nil

при запуске моей программы Go она паникует и возвращает следующее: panic: runtime error: invalid memory address or nil pointer dereference [signal 0xb code=0x1 addr=0x38 pc=0x26df] goroutine 1 [running]: main.getBody(0x1cdcd4, 0xf800000004, 0x1f2b44, 0x23, 0xf84005c800, ...) /Users/matt/Dropbox/code/go/scripts/cron/fido.go:65 +0x2bb main.getToken(0xf84005c7e0, 0x10) /Users/matt/Dropbox/code/go/scripts/cron/fido.go:140 +0x156 main.main() /Users/matt/Dropbox/code/go/scrip ...

Как соединить срез в строку?

package main import ( "fmt" "strings" ) func main() { reg := [...]string {"a","b","c"} fmt.Println(strings.Join(reg,",")) } дает мне ошибку: prog.go: 10: невозможно использовать reg (type [3]string) в качестве типа []string в аргументе к строкам.Присоединяйтесь есть ли более прямой / лучший способ, чем цикл и добавление к var? ...

Как общая память и передача сообщений обрабатывают большие структуры данных?

глядя на подход Go и Erlang к параллелизму, я заметил, что они оба полагаются на передачу сообщений. этот подход, очевидно, облегчает необходимость сложных блокировок, потому что нет общего состояния. однако рассмотрим случай, когда многим клиентам требуется параллельный доступ только для чтения к одной большой структуре данных в памяти-например, массив суффиксов. мои вопросы: будет ли использование общего состояния быстрее и использовать меньше памяти, чем передача сообщений, поскольку бло ...

Как скомпилировать программу Go, состоящую из нескольких файлов?

Итак, у меня есть небольшая программа, которая состоит из трех файлов, все принадлежащие к одному пакету (main), но когда я делаю "go build main.перейти " сборка не удается. Когда это был только один файл (main.идти) все работало нормально. Теперь, когда я предпринял некоторые усилия, чтобы отделить код, похоже, компилятор не может найти материал, который был взят из main.идите и поместите в эти два других файла (которые находятся в том же каталоге, что и основной.идти.) Что приводит к "неопреде ...

Как сбросить goroutine stacktraces?

У меня есть фон Java, и я люблю использовать signal QUIT для проверки дампа потока Java. Как позволить Golang распечатать все goroutines stack trace? ...

Почему дрм.Println внутри goroutine не печатает строку?

у меня есть следующий код: package main import "net" import "fmt" import "bufio" func main() { conn, _ := net.Dial("tcp", "irc.freenode.net:6667") reader := bufio.NewReader(conn) go func() { str, err := reader.ReadString('n') if err != nil { // handle it fmt.Println(err) } fmt.Println(str) }() } Если у меня нет кода, который читает из буфера в goroutine, он выводит сообщение, подобное этому, что я и ожидаю: :zelazny ...