1.注释
单行注释
代码语言:javascript复制 // 单行注释
多行注释
代码语言:javascript复制/*
多行注释
*/
2.变量
2.1. 变量定义
语法:
代码语言:javascript复制var 变量名 变量类型
例子:
代码语言:javascript复制// 定义一个int类型变量
var i int
// 定义三个bool类型变量,变量名之间使用逗号分隔
var c, python, java bool
2.2. 变量初始化
定义变量的时候直接初始化
语法1:
代码语言:javascript复制var 变量名 变量类型 = 初始值
例子:
代码语言:javascript复制// 定义变量i, 数据类型为int, 初始值为10
var i int = 10
// 定义两个int变量i和j, 并且i的初始值为1,j的初始值为2
var i, j int = 1, 2
语法2:
不指定变量的类型,编译器通过初始值的类型,自动推导出变量的类型。
代码语言:javascript复制var 变量名 = 初始值
例子:
代码语言:javascript复制// 定义变量i,初始值为10,没有指定i变量的数据类型,编译器会根据10推导出i为int类型
var i = 10
// 定义三个变量c, python, java,他们的初始值分别如下:
// c = true 自动推导出类型bool
// python = false 自动推导出类型bool
// java = "no!" 自动推导出类型string
var c, python, java = true, false, "no!"
注意:一个变量一旦初始化后,变量类型就不能改变了,例如:将一个变量初始化为int类型,就不能将string类型的值赋值给这个变量,否则编译器会报错。
错误例子:
代码语言:javascript复制var i = 10
i = "hello" // 错误的,类型不匹配。
2.3. 短变量声明
go语言提供了一种定义和初始化变量的快捷方式,短变量声明符号(:=),我们可以不必预先定义变量,而是在使用的时候直接初始化和定义变量
例子:
代码语言:javascript复制i := 20
i变量没有预先定义,这个时候将变量i初始化为20,因为20是int类型,所以也定义了一个int类型的变量。
例子:
代码语言:javascript复制// 初始化并定义一个string类型变量
s := "www.xj.com"
// 初始化并且定义一个bool类型变量
ok := false
在同一个作用域内,一个变量只能被定义一次,也就是说短变量声明符,在同一个作用域内,一个变量只能用一次。
例子:
代码语言:javascript复制// 定义并且初始化变量i
i := 10
i = 200 // 给变量赋值,注意这里等号前面没有冒号
i := 100 // 再次定义并且初始化变量i, 这里编译器会报错,变量重复定义了。
3.数值类型
下面是GO语言支持的基本数值类型
整数
从8位到64整数
代码语言:javascript复制int int8 int16 int32 int64
注意int类型,根据不平台可能是32位也可能是64位
无符号整数类型
代码语言:javascript复制uint uint8 uint16 uint32 uint64 uintptr
uintptr是一种指针类型。
byte 类型,是uint8的别名,占一个字节。
浮点数类型
代码语言:javascript复制float32 float64
综合例子:
代码语言:javascript复制var i int32 = 10
var j uint64 = 1000
var d float64 = 25.3
4.字符串类型
字符串使用双引号包括字符,go语言的字符串跟java的字符串类似,可以动态的调整自己的存储空间。
代码语言:javascript复制// 定义string类型变量
var s string
// 赋值
s = "hello"
或者
代码语言:javascript复制// 直接初始化一个字符串变量
s := "hello world"
通过len函数获取字符串长度
代码语言:javascript复制l := len(s)
字符串拼接
代码语言:javascript复制s := "hello"
// 通过 号拼接字符串
s2 := s " world"
5.bool类型
布尔类型,只有true和false两种值
代码语言:javascript复制// 定义一个bool类型变量, 并且初始化为false
var yes bool = false
// 直接初始化一个bool变量,值为true
ok := true
6.零值
零值,也就是默认值,如果在go语言中,我们定义一个变量但是没有给变量一个初始值,那么变量的零值如下:
- • 数值类型,默认值是0
- • 布尔值类型,默认值是false
- • 字符串类型,默认值是 ""
7.数据类型转换
go语言是强类型语言,如果一个变量是int类型,不能直接将int32类型的值赋值给int类型,必须要做类型转换。
对于数值类型,go语言提供了快捷的类型转换语法。
语法:
代码语言:javascript复制数据类型(变量)
例子:
代码语言:javascript复制var i int = 100
var j int64
// 将i转换成int64类型
j = int64(i)
var d float64
// 将i转换成float64类型
d = float64(i)
8.常量
常量就是一旦被定义,值就不能被改变。
例子:
代码语言:javascript复制// 定义常量Pi
const Pi = 3.14
// 定义字符串常量IP
const IP = "127.0.0.1"
// 语法2,一次定义Big和Small两个常量
const (
Big = 1 << 100
Small = Big >> 99
)
9.综合例子
文件: main.go
代码语言:javascript复制package main
// 导入fmt包
import "fmt"
// 在函数外面定义全局变量
var i int = 0
// 入口函数main
func main() {
// 给变量i赋值
i = 100
// 定义string变量
var s string
// 给变量s赋值
s = "hello"
// 打印变量值
fmt.Println(s)
// 短变量声明用法
yes := false
str := "www.xj.com"
code := 200
// 赋值
yes = true
str = "https://www.xj.com"
code = 301
// 打印变量值
fmt.Println(yes)
fmt.Println(str)
fmt.Println(code)
}
运行命令:go run main.go
运行后输出:
代码语言:javascript复制hello
true
https://www.xj.com
301
我有个大胆的想法
小伙伴在平常有没有遇到以下这种情况:遇到技术难题时,网上教程一堆堆,优秀的很多,但也有很多是过时的,或者是copy来copy去,甚至错别字都没改。
我公众号的技术文章,都是亲自校验过的。至少可以保证在发文的一段时间,不会过时。如果你在实操过程中,有遇到问题,可以在同名公众号留言,免费解答,相互学习,相互成长^v^