变量类型和操作符
iota枚举
- iota常量自动生成器,每隔一行自动累加一
- iota给常量赋值使用
package main import "fmt" func main() { const ( a = iota // 0 b = iota // 1 c = iota // 2 ) fmt.Printf("a = %d, b = %d, c = %d", a, b, c) }
- iota遇到const,重置为0
const d = iota fmt.Println("d = ", d)
- 可以只写一个iota
const ( a = iota b c )
- 如果是同一行,值都一样
const ( i = iota j1, j2, j2 = iota, iota, iota // j1 2 3值一样 k = iota )
变量类型
名称 | 长度 | 默认值 | 说明 | |
---|---|---|---|---|
bool | 布尔类型 | 1 | false | 其值非真即假,不能用数字代替true或false |
byte | 字节型 | 1 | 0 | utf8别名 |
rune | 字符类型 | 4 | 0 | 专用于存储unicode编码,等价于uint32 |
int, uint | 整型 | 4或8 | 0 | 32位或64位 |
int8, uint8 | 整型 | 1 | 0 | -128~127, 0~255 |
int16, uint16 | 整型 | 2 | 0 | -32768~32767, 0~65535 |
int32, uint32 | 整型 | 4 | 0 | -21亿~21亿, 0~42亿 |
int64, uint64 | 整型 | 8 | 0 | |
float32 | 浮点型 | 4 | 0.0 | 小数点精确到7位 |
float64 | 浮点型 | 8 | 0.0 | 精确到15位 |
complex64 | 复数类型 | 8 | ||
complex128 | 复数类型 | 16 | ||
uintptr | 整型 | 4或8 | 无符号整型,用于存放一个指针 | |
string | 字符串 | "" | utf-8字符串 |
bool类型
var a bool a = true // 自动推导 var b = false c := false
var f1 float32 f1 = 3.14 f2 := 3.14
// 字符可以赋值数字(对应的ascii码值),也可以是字符,字符必须用单引号引起来 var ch byte ch = 97 // 输出格式化 fmt.Printf("%c, %d\n", ch, ch) // a, 97 // 大小写转换 ch1 := 'A' + 32 ch2 := 'a' - 32
var a string a = "hello world" // 字符串的两种表示方式 // 双引号 "" var str = "hello world \r\n" // 转义字符有效 // 反引号 `` var str1 = `hello world \r\n` // 转移字符无效 // 反引号还能写多行 var str2 = ` 床前明月光, 疑是地上霜。 举头望明月, 低头思故乡。 `
time.Now().UnixNano() // 获取1970年到现在的纳秒数
package main import ( "fmt" "time" ) func main() { var timeNow time.Time timeNow = time.Now() fmt.Printf("%s", timeNow) }
- now := time.Now()
- time.Now().Day()
- time.Now().Minute()
- time.Now().Month()
- time.Now().Year()
fmt.Printf("%02d/%02d/%02d %02d:%02d:%02d", now.Year()...) // 必须使用 2006/01/02 15:05 格式化,这也是go诞生的时间 now.Format("2006/01/02 15:05")
- time.Duration 表示纳秒
- time.Minute 表示分钟
- time.Second 表示秒钟
- ....等等等等
-
-
获取变量的地址,用&,比如var a int, 获取a的地址,就用&a
-
指针类型:变量存的是一个地址,这个地址存的才是值
-
获取指针类型所指向的值,使用:*,比如:var p *int,使用 *p获取p指向的值
// 声明 var p *int // 赋值,将指针指向a的地址 var a int = 10 p = &a // 赋值,修改对应地址里面的值 *p = 100 // 这里的*p就是a // 取值 var b = *p
== 、 != 、 < 、 <= 、 > 、 >=
+ 、 - 、 * 、 / 等等