Вы никогда не закрываете канал fetchedSymbols
, поэтому цикл диапазона никогда не выйдет.
. Один из способов справиться с этим - использовать WaitGroup, с которым вы уже должны сигнализировать, когда закрыть канал , Для того, чтобы заблокировать прогресс в главном, достаточно превысить fetchedSymbols
, и вам не нужен другой канал или WaitGroup.
...
go func() {
wg.Wait()
close(fetchedSymbols)
}()
for response := range fetchedSymbols {
fmt.Println("fetched " + response)
}
...
Поскольку вы используете загрузчик, вы можете использовать col-md-4
и col-md-8
, чтобы элементы были выровнены по вертикали. А чтобы текст + ввод находился посередине, вы можете использовать text-align: center;
Я привел пример здесь. скрипка
Вы можете решить свою проблему и улучшить удобство использования / доступность за один раз. Мы можем использовать дисплей flexbox
на form
для устранения проблем с выравниванием. Я добавил <label>
к тексту и установил их flex-grow: 1
. Это говорит <label>
о том, чтобы занять максимальное горизонтальное пространство. Другое преимущество состоит в том, что он создает второй дочерний элемент в каждом родительском контейнере flex
для манипулирования.
form {
display: flex;
}
label {
flex-grow: 1;
text-align: right;
padding-right: 10px;
}
<form>
<label for="t1">String</label><input type="text" id="t1">
</form>
<form>
<label for="t2">Long string</label><input type="text" id="t2">
</form>
<form>
<label for="t3">The longest string</label><input type="text" id="t3">
</form>
В этом коде есть много неправильного (или, по крайней мере, из-за стандартных и хороших практик).
Первый : вам не нужно использовать один тег формы для каждого поля, а только один обертывание всей таблицы
Второй : использовать не рекомендуется таблица для этого вида контента. Есть много других способов сделать это. Например, flexbox ( Основные понятия о flexbox ) Таблицы рекомендуются только для случаев, когда информация, которую вы должны отобразить, является реальной таблицей. (набор информации в строках и столбцах)
Третий : th-теги должны использоваться внутри тегов thead (h для заголовка, они должны быть верхней ячейкой для каждого столбец, показывающий заголовок для содержимого в этом столбце)
Если вы все еще хотите использовать таблицы для этого, вы должны сделать td для метки поля и один для ввода в каждой строке, и вы можете использовать colspan и rowspan, чтобы ячейки занимали пространство более чем одной ячейки (по горизонтали или вертикали соответственно), попробуйте этот код:
<table>
<tr>
<td rowspan="3">net. config</td>
<td style="text-align:right;">IP Address</td>
<td><input type="text" id="SYST_IPAD" placeholder="0.0.0.0"></td>
</tr>
<tr>
<td style="text-align:right;">Netmask</td>
<td><input type="text" id="SYST_NETM" placeholder="0.0.0.0"></td>
</tr>
<tr>
<td style="text-align:right;">Gateway</td>
<td><input type="text" id="SYST_GWAD" placeholder="0.0.0.0"></td>
</tr>
</table>