go ×16
Создан 06.01.2025
14
голоса
5
ответов
36
просмотров
Как проверить, содержит ли карта ключ в Go?

Я знаю, что я могу перебрать карту m с помощью следующего кода:

for k, v := range m

и проверить наличие ключа, но есть ли более эффективный способ для проверки существования ключа в карте?

10
голоса
5
ответов
35
просмотров
Как эффективно объединять строки в Go

В Go тип string является примитивным, что означает, что он является неизменяемым, и любое его изменение приводит к созданию новой строки.

Я хочу объединить строки множество раз, не зная длину результирующей строки. Какой самый эффективный способ сделать это?

Наивный способ может выглядеть...

9
голоса
5
ответов
33
просмотров
Как написать многострочные строки в Go?

Существует ли в Go что-то похожее на многострочные строки в Python:

"строка 1 строка 2 строка 3"

Если нет, то какой предпочтительный способ записи строк, занимающих несколько строк?

8
голоса
5
ответов
29
просмотров
Как идиоматично представлять перечисления (enum) в Go?

Я пытаюсь представить упрощенную хромосому, которая состоит из N оснований, каждое из которых может быть только одним из {A, C, T, G}.

Я хотел бы формализовать ограничения с помощью перечисления (enum), но меня интересует, какой самый идиоматичный способ эмуляции перечислений в языке Go.

8
голоса
4
ответов
33
просмотров
Как преобразовать int в строку в Go?

Проблема с преобразованием числа в строку в Go

Я столкнулся с проблемой в Go при попытке преобразовать целое число в строку. Вот мой код:

i := 123
s := string(i) 

В результате переменная s содержит символ 'E', но я хочу получить строку "123".

Как я могу получить строку...

8
голоса
5
ответов
17
просмотров
Опциональные параметры в Go?

Можно ли в Go использовать необязательные параметры? Или мне просто нужно определить две разные функции с одинаковым именем, но с разным количеством аргументов?

7
голоса
5
ответов
28
просмотров
Как вывести переменные структуры в консоль?

Как вывести в консоль значения полей Id, Title, Name и т.д. структуры в Go?

Я работаю с этой структурой в Go:

type Project struct {
    Id      int64   `json:"project_id"`
    Title   string  `json:"title"`
    Name    string  `json:"name"`
    Data    Data    `json:"data"`
   ...
7
голоса
5
ответов
35
просмотров
Существует ли цикл foreach в Go?

Есть ли в языке Go конструкция foreach? Могу ли я итеративно обрабатывать срез или массив, используя for?

6
голоса
5
ответов
40
просмотров
6
голоса
5
ответов
15
просмотров
Какой идиоматичный эквивалент тернарного оператора C в Go?

В языках C/C++ (и во многих других языках, принадлежащих к этой семье) распространенным приемом при объявлении и инициализации переменной в зависимости от условия является использование тернарного оператора:

int index = val > 0 ? val : -val

В языке Go нет тернарного оператора. Как наиболее...

5
голоса
5
ответов
14
просмотров
Как определить тип объекта в Go?

Как узнать тип объекта в Go? В Python я просто использую typeof, чтобы получить тип объекта. Существует ли аналогичный способ сделать это в Go?

Вот код, из которого я итерируюсь:

for e := dlist.Front(); e != nil; e = e.Next() {
    lines := e.Value
   ...
5
голоса
5
ответов
14
просмотров
Отформатировать строку в Go без вывода?

Есть ли простой способ форматирования строки в Go без ее вывода на консоль?

Я могу сделать так:

bar := "bar"
fmt.Printf("foo: %s", bar)

Но мне нужно, чтобы отформатированная строка возвращалась, а не выводилась, чтобы я мог работать с ней дальше.

Я мог бы также сделать что-то вроде...

5
голоса
5
ответов
14
просмотров
Как присвоить строку массиву байтов

Заголовок: Как преобразовать строку в массив байт в Go?

Текст проблемы:

Я хочу назначить строку массиву байт в Go. У меня есть следующий код:

var arr [20]byte
str := "abc"
for k, v := range []byte(str) {
    arr[k] = byte(v)
}

Однако я ищу другой способ сделать это более эффективно...

5
голоса
5
ответов
12
просмотров
Как преобразовать массив байтов с нулевым завершением в строку?

Я столкнулся с проблемой чтения массива байтов [100]byte, чтобы передать многострочные данные типа string. Однако не все строки имеют длину ровно 100 символов, и оставшаяся часть массива байтов заполняется нулями (0).

Когда я пытаюсь преобразовать [100]byte в string, используя следующий...

0
голоса
1
ответов
1
просмотров
Как получить общий код покрытия для всех пакетов в Go?

У меня есть библиотека, состоящая из нескольких пакетов. При запуске тестов я использую флаг -cover, и он показывает информацию о покрытии для каждого пакета по отдельности. Вот пример вывода:

--- PASS: TestSampleTestSuite (0.00s)
PASS
coverage: 28.7% of statements
ok     ...
0
голоса
5
ответов
0
просмотров
Есть ли способ получить доступ к приватным полям структуры из другого пакета?

У меня есть структура в одном пакете, которая имеет приватные поля:

package foo

type Foo struct {
    x int
    y *Foo
}

И в другом пакете (например, в пакете для белобокового тестирования) нужно получить к ним доступ:

package bar

import "../foo"

func change_foo(f *foo.Foo) {
...