一. 变量
1.函数的特征
- 函数外只能放标识符(变量\常量\函数\类型)
- 如果要编译一个可执行文件,必须要声明一个main包,且代码中要有main函数
- main函数是入口函数,没有参数,也没有返回值
- 函数外必须以关键字开头
// 第一行必须声明包名
package main// 导入语句
import "fmt"
// fmt.Println("from G:") //非法
// 程序的入口函数
func main() {
fmt.Println("from G:")
}
2.标识符:字母数字下划线,只能以字母和下划线开头
3.25个关键字,37个保留字
break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
4.静态语言:变量必须要声明类型 eg:go 动态语言:变量无需声明类型,eg: pyhon
5.注释
// 单行注释
/* 多行注释 */
6.语法知识
// 第一行必须声明包名
package main
// 导入fmt包
import "fmt"
// 1.申明变量
// 局部变量必须先声明再使用,而且变量必须要使用,否则报错
// 全局变量可以只声明不使用
// 同一个作用域中不能重复声明同一个变量
var 变量名 变量类型
// 单独声明
var name string // 默认为空字符串""
var age int // 默认为0
var height float32 // 默认为0
var isOK bool // 默认为false
// 切片、函数、指针变量的默认为nil
//批量声明
var (
name string
age int
height float32
isOK bool
// )
//变量赋值与使用
func main() {
name = "理想"
age = 16
// height = 171.5
isOK = true
fmt.Print(height)
fmt.Print(name) // 末尾没有换行符
fmt.Printf("age:%d", age) // 格式化输出,末尾没有换行符
fmt.Println() // 打印换行符
fmt.Printf("height:%f\n", height) // \n即换行符,%f默认保留6位小数
fmt.Println(isOK) //末尾有换行符
}
// 2.其它
func main() {
// //声明变量同时赋值
var s1 string = "lhj"
fmt.Println(s1)
// //类型推导(根据值判断变量是什么类型)
var s2 = 11
fmt.Println(s2)
// //简短声明,只能在函数里面用
s3 := 0.5
fmt.Println(s3)
}
// 3.匿名变量
// 如果函数返回值有多个,我们可以只接收一个,另一个用下划线 _ 接收
// 这样的好处是不占用内存,而且也避免了后面不使用该变量而报错的情况
func foo() (int, string) {
return 10, "Q1mi"
}
func main() {
x, _ := foo()
_, y := foo()
fmt.Println("x=", x, y)
fmt.Println("y=", y)
}
// 4.总结,四种声明变量的方式
① var name string
函数内部: string="xxx"
② var name string = "xxx"
③ var name = "xxx"
④ name := "xxx"
二. 常量
1.常量const的特征:
- 常量在定义的时候必须赋值
- 不能对同一常量反复定义
const pi = 3.1415 const e = "xxx"
可以批量定义
const (
pi = 3.1415
e = "xxx"
)
const同时声明多个常量时,如果省略了值则表示和上面一行的值相同。 以下示例中,n1,n2,n3都是100
const (
n1 = 100
n2
n3
)
2. iota
- go语言的常量计数器,只能在常量的表达式中使用
- const中每新增一行常量声明,
iota加一(iota可理解为const语句块中的行索引, 定义枚举时很有用) - 在const关键字出现时将被重置为0
举例
const (
n1 = iota //0
n2 //1
n3 //2
n4 //3
)
使用 _ 跳过某些值
const (
n1 = iota //0
n2 //1
_
n4 //3
)
声明中间插队
const (
n1 = iota //0
n2 = 100 //100
n3 = iota //2
n4 //3
)
const n5 = iota //0
多个iota定义在一行
const (
a, b = iota + 1, iota + 2 //1,2
c, d //2,3
e, f //3,4
)
定义数量级 (这里的<<表示左移操作,1<<10表示将1的二进制表示向左移10位,也就是由1变成了10000000000,也就是十进制的1024。同理2<<2表示将2的二进制表示向左移2位,也就是由10变成了1000,也就是十进制的8。)
const (
_ = iota
KB = 1 << (10 * iota)
MB = 1 << (10 * iota)
GB = 1 << (10 * iota)
TB = 1 << (10 * iota)
PB = 1 << (10 * iota)
)
--- 君子处其实,不处其华;治其内,不治其外 张居正 ----
来源:https://www.cnblogs.com/jiangzongyou/p/12153172.html