Туруктуулар өзгөрмөлөр сыяктуу кээ бир маалыматтарды сактайт, бирок өзгөрмөлөрдөн айырмаланып, константалардын маанилерин өзгөртүүгө болбойт, алар бир жолу коюлат. Туруктуулар компиляция убагында эсептелет. Бул аткаруу убагында аткарылышы керек болгон иштин көлөмүн азайтат жана константаларга байланыштуу каталарды табууга жардам берет (анткени алардын айрымдарын компиляция учурунда табууга болот).
const ачкыч сөзү туруктууларды аныктоо үчүн колдонулат :
1 |
const pi float64 = 3.1415 |
Ал эми өзгөрмөдөн айырмаланып, биз туруктуунун маанисин өзгөртө албайбыз. Эгерде биз муну жасоого аракет кылсак, анда компиляция учурунда биз ката алабыз:
1 2 |
const pi float64 = 3.1415 pi = 2.7182 // ! Ошибка |
Бир аныктамада бир эле учурда бир нече константаларды жарыялоого болот:
1 2 3 4 |
const ( pi float64 = 3.1415 e float64 = 2.7182 ) |
же ушул сыяктуу:
1 |
const pi, e = 3.1415, 2.7182 |
Эгерде константтын түрү жок болсо, анда ал константа инициализацияланган маанинин негизинде кыйыр түрдө чыгарылат:
1 |
const n = 5 // тип int |
Ошол эле учурда, константа жарыяланганда баштапкы мааниси менен инициализациялоо керек. Мисалы, төмөнкү туруктуу аныктамалар жараксыз, анткени алар инициализацияланган эмес:
1 2 |
const d const n int |
Эгерде константалардын ырааттуулугу аныкталса, биринчи константадан башкасы үчүн маанини баштоону өткөрүп жиберүүгө болот. Бул учурда, мааниси жок туруктуу мурунку константтын маанисин алат:
1 2 3 4 5 6 7 8 |
const ( a = 1 b c d = 3 f ) fmt.Println(a, b, c, d, f) // 1, 1, 1, 3, 3 |
Туруктууларды сандар же саптар сыяктуу литералдар же башка константалардын маанилери сыяктуу туруктуу маанилер менен гана инициализациялоого болот. Бирок биз өзгөрмөнүн мааниси менен константты инициализациялай албайбыз:
1 2 3 4 |
var m int = 7 // const k = m // ! Ошибка: m - переменная const s = 5 // Норм: 5 - числовая константа const n = s // Норм: s - константа |