- Можно ли объявить несколько переменных в одном выражении var?
Да, хотя в моем личном опыте я никогда не видел его в локальном масштабе. Синтаксис var (...)
традиционно зарезервирован для объявлений верхнего уровня (хотя я никогда не видел этого в каких-либо руководствах по стилю, это просто мое наблюдение).
- Должны ли вы объявлять переменные с помощью var или вывести тип, используя: = okay?
Обычно :=
в порядке. Обычно вы хотите использовать var
с явным типом, когда тип либо не является очевидным, либо вы хотите, чтобы переменная была чем-то иным, чем очевидным, или даже принудительно приводила к типу.
Например, допустим, что у вас есть переменная, a
, и вы хотите создать повторяющуюся переменную, b
. Иногда вы можете напомнить читателю, что тип a
, а не просто делать b := a
.
В качестве примера «отличного от очевидного» случая представьте, что вы хотите 16-битовое значение с плавающей запятой. Вы могли бы сделать что-либо из следующего, но некоторые считают, что второй уборщик:
a := float16(1)
var a float16 = 1
Наконец, использовать var
где вы только объявляющий, не назначая переменной (например, использовать его значение по умолчанию, или назначить его позже):
`var a int`
- при объявлении ломтик монет, это лучше, чтобы объявить их локально в функции?
Это зависит главным образом от двух факторов: логически ли оно связано с функцией и достаточно ли оно громоздким, если оно объявлено локально?
Очевидно, что если одно и то же значение используется в других функциях, вы можете захотеть объявить его глобально. Иногда, даже если он используется только в одной функции, он все же имеет более логичный смысл объявить его глобально (например, если он похож на параметр поведения общего пакета, например, сколько байтов используется для локального хранилища или что-то типа того).
Даже если он логически связан с локальной функцией, если это очень долго значение, объявляя его локально может засорять код значительно, который был бы уважительная причина объявить глобально:
функ MyFunc () {
// Do некоторый материал
mySlice: = [] строка { "1", "2", "3", "4", "5", "6", "7", «8», «9», «10», «11», «12», «13», «14», «15», «16», «17», «18», «19», «20 «21», «22», «23», «24», «25», «26», «27», «28», «29», «30», «31», «32», «33», «34», «35», «36», «37», «38», «39», «40», «41», «42», «43», «44», «45 "," 46 "," 47 "," 48 "," 49 "," 50 "," 51 "," 52 "," 53 "," 54 "," 55 "," 56 "," 57 "," 58 " , «59», «60», «61», «62», «63», «64», «65», «66», «67», «68», «69», «70», 71 "," 72 "," 73 "," 74 "," 75 "," 76 "," 77 "," 78 "," 79 "," 80 "," 81 "," 82 "," 83 " , «84», «85», «86», «87», «88», «89», «90», «91», «92», «93», «94», «95», 96 "," 97 "," 98 "," 99 "," 100 "," 101 "," 102 "," 103 "," 104 "," 105 "," 106 "," 107 "," 108 " , «109», «110», «111», «112», «113», «114», «115», «116», «117», «118», «119», «120», 121 "," 122 "," 123 "," 124 "," 125 "," 126 "," 127 "," 128 "," 129 "," 130 "," 131 "," 132 "," 133 " «134», «135», «136», «137», «138», «139», «140», «141», «142», «143», «144», «145», 146 "," 147 "," 148 "," 149 "," 150 "," 151 "," 152 "," 153 "," 154 "," 155 "," 156 "," 157 "," 158 " , «159», «160», «161», «162», «163», «164», «165», «166», «167», «168», «169», «170», 171 «,« 172 »,« 173 »,« 174 »,« 175 »,« 176 »,« 177 »,« 178 »,« 179 »,« 180 »,« 181 »,« 182 »,« 183 », «188», «181», «181», 196" , "197", "198", "199", "200",}
// Делайте некоторые другие вещи.
}
(Обратите внимание, что я не писал, что в качестве блока кода, потому что он не был бы обернута вокруг иначе, и не было бы передать, насколько уродлив, что может быть.)
http://golang.org/doc/effective_go.html поможет ответить на некоторые из ваших вопросов о написании «идиоматического» кода Go. – elithrar