变量类型和操作符
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
== 、 != 、 < 、 <= 、 > 、 >=
+ 、 - 、 * 、 / 等等

浙公网安备 33010602011771号