GO+ 语言基础-字面量简单解析
- 一、前言
- 二、字面量类型
- 1.整型字面量
- 2.实型字面量
- 3.字符字面量
- 4.逻辑字面量
- 5.字符串字面量
- 6.复数类型字面量
官方线上GO+练习环境:https://play.goplus.org/
一、前言
在计算机科学中,字面量(literal)是用于表达源代码中一个固定值的表示法(notation)。几乎所有计算机编程语言都具有对基本值的字面量表示,诸如:整数、浮点数以及字符串;而有很多也对布尔类型和字符类型的值也支持字面量表示;还有一些甚至对枚举类型的元素以及像数组、记录和对象等复合类型的值也支持字面量表示法。
二、字面量类型
1.整型字面量
使用特定的字符序列表示具体的整型数值。如:
var num int
num =1
println(num)
2.实型字面量
实型字面量型字面量使用特定字符序列来表示一个浮点数值。如:
var num float32
num =1.12
println(num)
3.字符字面量
采用UTF-8的编码方式,占用1~4个字节。如:
var num byte
num = 'a'
println(num)
4.逻辑字面量
逻辑字面量只有两个值 true和false。如:
var num bool
num = true
println(num)
5.字符串字面量
字符串字面量(stringliteral)是指双引号引住的一系列字符,双引号中可以没有字符,可以只有一个字符,也可以有很多个字符。如:
var num string
num = "a"
num = `a`
println(num)
6.复数类型字面量
Go+语言中有多种复合数据,如:数组、切片、map、结构体,等;我把这些类型的字面量写法抽象为了一个语法,即:类型{成员列表},和其他字面量本无本质区别。
(1)数组
a := [x*x for x <- [1, 3, 5, 7, 11]]
b := [x*x for x <- [1, 3, 5, 7, 11], x > 3]
c := [i+v for i, v <- [1, 3, 5, 7, 11], i%2 == 1]
d := [k+","+s for k, s <- {"Hello": "xsw", "Hi": "Go+"}]
arr := [1, 2, 3, 4, 5, 6]
e := [[a, b] for a <- arr, a < b for b <- arr, b > 2]
x := {x: i for i, x <- [1, 3, 5, 7, 11]}
y := {x: i for i, x <- [1, 3, 5, 7, 11], i%2 == 1}
z := {v: k for k, v <- {1: "Hello", 3: "Hi", 5: "xsw", 7: "Go+"}, k > 3}
(2)切片
x := [1, 3.4] // []float64
y := [1] // []int
z := [1+2i, "xsw"] // []interface{}
a := [1, 3.4, 3+4i] // []complex128
b := [5+6i] // []complex128
c := ["xsw", 3] // []interface{}
empty := [] // []interface{}
(3)map
x := {"Hello": 1, "xsw": 3.4} // map[string]float64
y := {"Hello": 1, "xsw": "Go+"} // map[string]interface{}
z := {"Hello": 1, "xsw": 3} // map[string]int
empty := {} // map[string]interface{}
(4)结构体
type Config struct {
Dir string
Level int
}
func foo(conf *Config) {
// ...
}
foo({Dir: "/foo/bar", Level: 1})
在线练习环境 点这里:https://play.goplus.org/