变量和常量
package main
import "fmt"
// 定义变量, 能赋值
var name string
// 批量定义变量 (常用)
var (
age int
ok bool
)
// 定义常量
const PI = 3.1415926
// 批量定义常量
const (
STATUS_OK = 200
STATUS_NOT_FOUND = 404
)
// 定义常量, 省略值
const (
N1 = 100
N2 // 不赋值默认跟上一行一样
N3
)
// iota是常量计数器. 一般用来实现枚举
const ( // iota遇到const归0
A1 = iota
A2 // 每新增一行iota就+1, A2=1
A3 = 100
A4 = iota // A2=3
)
// iota定义数量级
const (
_ = iota
KB = 1 << (10 * iota) // 1024
MB = 1 << (10 * iota) // 2^20
GB = 1 << (10 * iota) // 2^30
)
func main() {
fmt.Println("Hello World!")
name = "lixiang"
age = 16
ok = true
fmt.Printf("name: %s", name)
println()
fmt.Printf("%v%d", ok, age)
println(ok)
fmt.Println()
var s1 string = "张三"
println(s1)
var s2 = "张三" // 自动推断类型
println(s2)
s3 := "嘿嘿嘿" // 简短变量声明 (常用)
println(s3)
_ := 12 // _ 是匿名变量, 一般用于占位
println(math.MaxFloat32) // float32的最大类型
fmt.Printf("%T\n", 1.234) // 输出变量类型. 浮点数默认是64位.
var b2 bool = false
fmt.Printf("%T:%v\n", b2, b2) // %v是通用的标志, 可以输出各种类型的变量. %#v会给字符串周围加双引号
s := `世界你好
你好世界`
path := `C:\Users\xx\AppData`
ss := "你好" + "世界" // 字符串拼接
print(fmt.Sprintf("%s%s", ss, ss)) // 字符串拼接
fmt.Println(strings.Split(`C:\Users\user`, "\\")) // 字符串分割
fmt.Println(strings.Split(`C:\Users\user`, "\\"))
fmt.Println(strings.HasPrefix("abc", "a")) // 前缀
fmt.Println(strings.HasSuffix("abc", "a")) // 后缀
fmt.Println(strings.Index("abac", "b")) // 查找字符串
fmt.Println(strings.Join([]string{"C:", "Users"}, "\\")) // string.join
fmt.Println(len("你好世界")) // 输出utf8字节数: 12
for i := 0; i < len("你好世界"); i++ {
fmt.Printf("%c", "你好世界"[i]) // 输出 ä½ å¥½ä¸–ç•Œ
}
fmt.Println()
var s3 []rune = []rune("你好世界") // rune是宽字符类型(内部是int32), 可以保存中文
fmt.Println(string(s3)) // 正常输出
}