English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Как и по имени CONSTANTS”подсказка означает фиксированное значение, в программировании также, то есть, как только значение константы определено, его больше нельзя изменить. Константы могут иметь любой базовый тип данных, например, целые числа, вещественные числа, символы или строковые литералы.
Как объявлять?
Константы объявляются так же, как переменные, но с использованиемconst Ключевые слова как префикс используются для объявления констант с определенным типом. Необходимо использовать:=Синтаксис объявления.
package main import "fmt" const PI = 3.14 func main() { const GFG = "w3codebox" fmt.Println("Hello", GFG) fmt.Println("Happy", PI, "Day") const Correct = true fmt.Println("Go rules?", Correct) }
Вывод:
Hello w3codebox Happy 3.14 Day Go rules? true
Непредельная и типизированная числовые константы:
Работа типизированных констант напоминает работу постоянных переменных, которые могут взаимодействовать только с теми же типами, а работа неопределенных констант напоминает работу литеральных констант, которые могут взаимодействовать с подобными типами. В Go можно声明 константы с использованием или без использования типов. Ниже приведены примеры именованных и неименованных типизированных и неопределенных числовых констант.
const untypedInteger = 123 const untypedFloating typed = 123.12 const typedInteger int = 123 const typedFloatingPoint float64 = 123.12
Вот список констант в языке Go:
числовые константы (целые числа, вещественные числа, комплексные числа)
строковые литералы
булевы константы
числовые константы:
числовые константы являютсявысокоточные значения。Go — это статически типизированный язык, который не позволяет смешивать операции с числовыми типами. Вы не можете добавитьfloat64добавленint,даже не может бытьint32添加 到int。虽然,写1e6 * time.Second 或math.Exp(1)甚至 1 <<('\ t'+ 2.0) 都是合法的。在Go中,常量与变量不同,其行为类似于常规数字。
数值常量可以是3种,即整数,浮点数,复数
整数常量:
前缀指定基数:十六进制为0x或0X,八进制为0,十进制为0。
整数字面量也可以具有后缀,分别是U(大写)和L(大写)的组合,分别表示无符号和长整数。
它可以是十进制,八进制或十六进制常量。
一个int最多可以存储64位整数,有时更少。
以下是整数常量的一些示例:
85 /* decimal */ 0213 /* octal */ 0x4b /* 十六进制 */ 30 /* int */ 30u /* unsigned int */ 30l /* long */ 30ul /* unsigned long */ 212 /* 合法 */ 215u /* 合法 */ 0xFeeL /* 合法 */ 078 /* 非法的:8不是八进制数字 */ 032UU /* 非法的:不能重复后缀 */
复数常量:
复数常量的行为与浮点常量非常相似。它是整数常数(或参数)的有序对 或 实数对,并且该常数用逗号分隔,并且该对包含在括号之间。第一个常数是实部,第二个常数是虚部。复数常量COMPLEX * 8使用8个字节的存储空间。
(0.0, 0.0) (-123.456E+30, 987.654E-29)
浮动类型常量:
浮点型常量具有一个整数部分,一个小数点,一个小数部分和一个指数部分。
可以用十进制或指数形式表示浮点常量。
虽然用十进制形式表示,必须包含小数点,指数,或两者兼而有之。
并且在使用指数形式表示时,必须包括整数部分,小数部分或两者。
以下是浮点类型常量的示例:
3.14159 /* 合法 */ 314159E-5L /* 合法 */ 510E /* 非法:不完整的指数 */ 210f /* недопустимо: нет десятичной или степенной части */ .e55 /* недопустимо: отсутствует целое или дробное число */
Строковые литералы
Go поддерживает два типа строковых литералов, то есть "" (двойные кавычки) и "" (обратные кавычки).
Строки могуткатенацияс+и+ =операторы.
Строки содержат символы, аналогичные символным литералам: чистые символы, последовательности escaping и универсальные символы, это неопределенные.
Значение нуля для строкового типа — пустая строка, которую можно представить или с помощью текста. " " ''
используя==,!=и (используемые для сравнения одинаковых типов) и т.д.,тип сравнимых строк
Синтаксис
type _string struct { elements *byte // нижний уровень байт len int //количество байт }
Пример отображения строковых литералов:
"hello, w3codebox"
"hello, \
w3codebox"
"hello, " "geeks" "forgeeks"
Здесь, все три вышеуказанных строки аналогичны, то есть у них нет никаких специфических типов.
Пример:
package main import "fmt" func main() { const A= "GFG" var B = "w3codebox" //склеивание строк var helloWorld = A+ " " + B helloWorld += "!" fmt.Println(helloWorld) //сравнение строк fmt.Println(A == "GFG") fmt.Println(B < A) }
Вывод:
GFG w3codebox! true false
Константы булева:
Константы булева аналогичны строковым константам. Они применяются по тем же правилам, что и строковые константы, разница лишь в том, что они имеют два неопределенных константа true и false.
package main import "fmt" const Pi = 3.14 func main() { const trueConst = true type myBool bool var defaultBool = trueConst // разрешено var customBool myBool = trueConst // разрешено // defaultBool = customBool // не разрешено fmt.Println(defaultBool) fmt.Println(customBool) }
Вывод:
true true