2015-03-20 3 views
2

В golang что такое строковые литералы?Почему структурные литералы «буквальные»

Почему следующий литерал, хотя есть переменная? И не структурированы ли буквально переменные, даже если не const? Итак, как это имеет смысл.

MyType{Field: var) 

У этого есть переменная, и все же это «буквальный»?

Также почему это называется «строковым литералом», когда вы его сначала инициализируете?

+0

Возможно, вы можете ожидать этого, но буквальный, как правило, не означает постоянной. Это происходит на многих языках. – user2357112

+0

так что это значит? lol – nhooyr

+0

потому что они литералы? : D – LinusGeffarth

ответ

5

Языки программирования используют слово «Literal» при обращении к синтаксическим способам построения некоторой структуры данных. Это означает, что он не создан, создавая пустую и добавляя или вычитая, когда вы идете.

Сравнить:

MyType{Field: myVariable} 

в

var x = new(MyType) 
x.Field = myVariable 

Преимущество заключается в том, что внешний вид вашего кода отражает структуру данных в некотором роде. Недостатком является то, что вам нужно заранее знать макет и уже инициализировать содержимое, что невозможно, если, например, вы создаете карту с неизвестными ключами.

+0

Большое спасибо; D – nhooyr

+2

Другие примеры: '1' - это int literal,' 'foo" '- строковый литерал и т. Д. – zmb

+0

Легкий способ запомнить это то, что данные для struct являются буквальными буквами 'прямо там в коде. – TomOnTime

Смежные вопросы