变量声明
var v1 int
var v2 stirng
var v3 [10]int //数组
var v4 []int //切片
var v5 struct{
}
var v6 *int //指向 int 的指针
var v7 map[string]int //map(字典),key 为 stirng,value 为 int
var v8 func(a int ) int
注意:在 go 中数据类型是放在标识符 的后面
- 在go中可以用 var关键字将若干个需要声明的变量放在一起
var (
v1 int
v2 stirng
)
变量的初始化
var v1 int = 10
var v2 = 10 //自动推导出 v2的类型
v3 := 10
:= 用于明确表达同事进行变量的声明和初始化工作.所以已经声明了的变量不能再使用 := 。否则会出现 no new variables on left side of := 错误
常量
const Pi float64 = 3.14159265358
const zero = 0.0 //自动推导
const (
size int64 = 1024
eof = -1
)
//预定义常量
//go 预定义了这些常量:true / false /iota
//iota 可以认为是一个可被编译器修改的常量,在每一个 const 关键字出现时被重置为0,然后在下一个 const 出现之前,没出现一次 ioat,其所表达的数字会自动增加1
const (
c0 = iota //co == 0
c1 = iota //c1 == 1
c2 = iota //c2 == 2
)
const ( //再次出现了 const ,所以接下来出现的第一个iota == 0
a = 1 << iota // a == 1
b = 1 << iota // b == 2
c = 1 << iota // c == 3
)
//两个 const 的赋值语句是一样,那么可以省略后面一个赋值表达式
const (
c0 = iota // c0 == 0
c1 //c1 == 1 ,他的完整表达式是 c1 = iota,但是他和上面的 c0的赋值语句是一样的,所以可以省略
)
go 中的类型
- 布尔类型:bool
- 整型: int8 byte int16 int uint uintptr 等
- 浮点类型: float32 float64
- 复数类型: complex64 complex128
- 字符串: string
- 字符类型: rune
- 错误类型: error
- 指针: pointer
- 数组: array
- 切片: slice
- 字典: map
- 通道: chan
- 结构体: struct
- 接口: interface
这些数据类型的基本操作,和 其他语言的一些操作,基本是一样的。但是还有有不同的…
一个完整的 go 程序:hello world
//声明这个程序的包是 main,也只有main 才能有 main 函数
package main
//导入 fmt 这个包
import (
"fmt"
//ff "fmt" 这样就是给 fmt 这个包起了个别名,然后就可以使用 ff 来调用fmt包中的函数
)
//main 函数 程序的入口
func main() {
fmt.Println("Hello World,你好,世界") //go 使用 utf-8,所以支持多语言.
}
//在 go中,使用首字母大写的函数就是 public,可以暴露出去.例如:fmt包中的 Println 函数
//而首字母小写的就是 private,不可以暴露出去