Вопросы
Получение тега поля структуры с использованием пакета reflect в Go
Заголовок: Как получить значение тега поля структуры в Go, не передавая всю структуру?
Описание проблемы:
В Go есть возможность отражения, и я хотел бы узнать, возможно ли получить доступ к значениям тегов конкретного поля структуры, не передавая всю структуру.
Рассмотрим следующий...
Какое полное название `iota` в Golang?
Вопрос: Каково полное название для iota
в Go (не использование)?
Я хочу понять, что представляет собой iota
в языке программирования Go. В приведенном ниже коде мы видим использование iota
для создания констант:
const ( // iota сбрасывается на 0
c0 = iota // c0 == 0
c1 =...
Кто-нибудь может объяснить, почему GOPATH удобен и как его следует использовать в общем?
Я новичок в языке программирования Go, и каждый учебник начинается с настройки переменной окружения GOPATH для текущей папки проекта.
Неужели я что-то упускаю? Разве программист действительно должен вручную настраивать GOPATH каждый раз, когда он переходит в новую папку проекта с помощью команды...
Можно ли одновременно изменять разные элементы среза?
У меня есть срез, который содержит задачи, которые нужно выполнить, и срез, который будет содержать результаты после завершения всех задач. Вот общее описание моего процесса:
var results = make([]Result, len(jobs))
wg := sync.WaitGroup{}
for i, job := range jobs {
wg.Add(1)
go func(i...
Доступ к полям структуры в значении карты (без копирования)
Проблема с доступом к полям структуры в мапе Go
Предположим, что у нас есть следующий код:
type User struct {
name string
}
users := make(map[int]User)
users[5] = User{"Steve"}
Я столкнулся с проблемой доступа к полю name
у экземпляра структуры, который сейчас хранится в...
Как преобразовать int64 в int в Go?
Проблема с преобразованием int64
в int
в Go
В Go, какая лучшая стратегия для конвертации int64
в int
? У меня возникли трудности с сравнением этих двух типов.
Вот пример кода, где я пытаюсь использовать int64
для вычислений:
package main
import (
"math"
"strings"
...
Golang: Как эффективно определить количество строк в файле?
Я ищу эффективный способ подсчитать количество строк в файле на языке Golang.
Конечно, я могу просто пройтись по всему файлу в цикле, но это не кажется очень эффективным подходом.
file, _ := os.Open("/path/to/filename")
fileScanner := bufio.NewScanner(file)
lineCount := 0
for...
Оптимизация хвостовых вызовов в Go
Проблема: В настоящее время язык программирования Go оптимизирует хвостовые вызовы? Если нет, то хотя бы оптимизирует ли он хвостовые рекурсивные вызовы функции к самой себе?
Могу ли я иметь несколько директорий GOPATH?
Я установил свой GOPATH в
/Users/me/dev/go
и у меня есть следующие директории:
/Users/me/dev/go/src/client1
/Users/me/dev/go/src/client2
/Users/me/dev/go/src/client3
Также в корневой папке dev находятся следующие...
Есть ли способ получить доступ к приватным полям структуры из другого пакета?
У меня есть структура в одном пакете, которая имеет приватные поля:
package foo
type Foo struct {
x int
y *Foo
}
И в другом пакете (например, в пакете для белобокового тестирования) нужно получить к ним доступ:
package bar
import "../foo"
func change_foo(f *foo.Foo) {
...
Как получить общий код покрытия для всех пакетов в Go?
У меня есть библиотека, состоящая из нескольких пакетов. При запуске тестов я использую флаг -cover
, и он показывает информацию о покрытии для каждого пакета по отдельности. Вот пример вывода:
--- PASS: TestSampleTestSuite (0.00s)
PASS
coverage: 28.7% of statements
ok ...
Какой идиоматичный эквивалент тернарного оператора C в Go?
В языках C/C++ (и во многих других языках, принадлежащих к этой семье) распространенным приемом при объявлении и инициализации переменной в зависимости от условия является использование тернарного оператора:
int index = val > 0 ? val : -val
В языке Go нет тернарного оператора. Как наиболее...
Как присвоить строку массиву байтов
Заголовок: Как преобразовать строку в массив байт в Go?
Текст проблемы:
Я хочу назначить строку массиву байт в Go. У меня есть следующий код:
var arr [20]byte
str := "abc"
for k, v := range []byte(str) {
arr[k] = byte(v)
}
Однако я ищу другой способ сделать это более эффективно...
Отформатировать строку в Go без вывода?
Есть ли простой способ форматирования строки в Go без ее вывода на консоль?
Я могу сделать так:
bar := "bar"
fmt.Printf("foo: %s", bar)
Но мне нужно, чтобы отформатированная строка возвращалась, а не выводилась, чтобы я мог работать с ней дальше.
Я мог бы также сделать что-то вроде...
Как преобразовать массив байтов с нулевым завершением в строку?
Я столкнулся с проблемой чтения массива байтов [100]byte
, чтобы передать многострочные данные типа string
. Однако не все строки имеют длину ровно 100 символов, и оставшаяся часть массива байтов заполняется нулями (0
).
Когда я пытаюсь преобразовать [100]byte
в string
, используя следующий...
Как определить тип объекта в Go?
Как узнать тип объекта в Go? В Python я просто использую typeof
, чтобы получить тип объекта. Существует ли аналогичный способ сделать это в Go?
Вот код, из которого я итерируюсь:
for e := dlist.Front(); e != nil; e = e.Next() {
lines := e.Value
...
Как преобразовать int в строку в Go?
Проблема с преобразованием числа в строку в Go
Я столкнулся с проблемой в Go при попытке преобразовать целое число в строку. Вот мой код:
i := 123
s := string(i)
В результате переменная s
содержит символ 'E', но я хочу получить строку "123".
Как я могу получить строку...
Как сопоставить любой символ на нескольких строках в регулярном выражении?
Например, данное регулярное выражение:
(.*)<FooBar>
совпадает с текстом:
abcde<FooBar>
Но как сделать так, чтобы оно совпадало с текстом, который занимает несколько строк?
abcde fghij<FooBar>
Существует ли цикл foreach в Go?
Есть ли в языке Go конструкция foreach? Могу ли я итеративно обрабатывать срез или массив, используя for?
Как вывести переменные структуры в консоль?
Как вывести в консоль значения полей 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"`
...