目录
环境安装
官方环境下载地址:All releases - The Go Programming Language
选择合适自己的版本下载即可
Windows环境变量配置
1、找到安装路径下的bin文件,复制该文件路径
2、打开系统高级设置(sysdm.cpl)
3、找到系统变量的Path,然后输入分号分隔前面的语句,将复制的路径添加在后面即可
Linux环境变量配置
1、直接使用yum安装的小伙伴就不用配置变量了,会自动创建链接到/usr/bin下,可以直接使用go环境
2、使用安装包安装的就需要查找go的安装位置,然后声明bin文件的路径到变量中
添加路径的时候需要用冒号分隔
验证环境
go version
出现版本号就代表环境安装成功!
一、Hello,World!
新建文件hello.go,输入以下内容:
package main //包的名字,每个程序都要有一个main包
import "fmt" //导入fmt包,格式化输入输出
//main()是程序除init()外最开始执行的函数
func main() {
/*
Println:输出结尾换行
Print:输出,结尾不换行
Printf:格式化输出
*/
fmt.Println("Hello" + ",World!")
fmt.Print("Hello,World!")
fmt.Printf("%s", "Hello,World!")
}
使用以下命令运行go:
go run hello.go
或者
go build hello.go //先构建成二进制文件,然后在运行
(Windows)hello.exe
(Linux)./hello
输出结果(Println:红色,Print:绿色,Printf:蓝色):
Hello,World!
Hello,World!Hello,World!
二、基础数据类型
1、数字类型
整型
类型 | 范围 |
uint8 | 无符号 8 位整型 (0 到 255) |
uint16 | 无符号 16 位整型 (0 到 65535) |
uint32 | 无符号 32 位整型 (0 到 4294967295) |
uint64 | 无符号 64 位整型 (0 到 18446744073709551615) |
int8 | 有符号 8 位整型 (-128 到 127) |
int16 | 有符号 16 位整型 (-32768 到 32767) |
int32 | 有符号 32 位整型 (-2147483648 到 2147483647) |
int64(default) | 有符号 64 位整型 (-9223372036854775808 到 9223372036854775807) |
浮点型
类型 | 范围 |
float32 | IEEE-754 32位浮点型数 |
float64(default) | IEEE-754 64位浮点型数 |
complex64 | 32 位实数和虚数 |
complex128 | 64 位实数和虚数 |
2、布尔类型
只有以下两种:
true
false
3、字符串类型
Golang使用Utf-8编码,单引号为字符(字符打印后会转化为编码值,属于整型),双引号为字符串
package main
import "fmt"
func main() {
//:=快速赋值语句,但是需要新的变量才可以使用,编译器可自行识别类型
s1 := 'a' //等同于var s1 int = 'a'
s2 := "a" //等同于var s2 string = "a"
fmt.Println(s1, s2)
}
输出结果(s1:红色,s2:绿色):
97 a
三、变量
1、变量初始值
整型初始值:0
布尔型初始值:false
字符串初始值:""(空)
以下几种初始值为nil:
var a *int
var a []int
var a map[string] int
var a chan int
var a func(string) int
var a error // error 是接口
2、变量声明
package main
import "fmt"
func main() {
var name string = "xiaoming" //声明直接赋值
var age int //先声明
age = 18 //再赋值
height := 180 //快速赋值,编译器自行判断类型,但是该变量只能是未声明过的
/*以下情况会报错
var height int
height := 180
*/
/*也可以批量声明变量
var age, height int
var age, height int = 18, 180
age, height := 18, 180
*/
fmt.Printf("%s今年%d岁,身高%dcm。", name, age, height) //%s代表字符串,%d代表整型(字符也要用整型)
}
输出结果:
xiaoming今年18岁,身高180cm。
3、变量作用域
package main
import "fmt"
var name string = "xiaohong" //函数外声明的变量为全局变量
func main() {
fmt.Println(name) //使用全局变量
name = "xiaoli" //修改全局变量
fmt.Println(name)
var name string = "xiaoming" //函数内声明的变量为局部变量
fmt.Println(name) //函数调用就近原则,函数内有则优先调用,在之后才是函数外的全局变量
}
输出结果:
xiaohong
xiaoli
xiaoming
4、注意事项
1)变量被定义了,就一定要使用,不然报错。
2)可以使用_来丢弃不需要的变量,如下代码,只有200和300被变量b和a保存了,100和400被丢弃了。
_, b = 100, 200
a, _ = 300, 400
四、常量
1、定义常量
package main
import "fmt"
func main() {
//常量不可修改
const age, height int = 18, 180 //声明常量
const pi = 3.14 //常量的类型可以省略
//也可以用这种形式批量创建常量
const (
name = "xiaohong"
number = len(name) //在常量中可以使用内置函数:len() unsafe.Sizeof() cap()
)
fmt.Println(age, height, pi, name, number)
}
输出结果:
18 180 3.14 xiaohong 8
2、iota常量
package main
import "fmt"
const (
a = iota //iota从0开始计数,a=0 iota=0
b //b=1 iota=1
c //c=2 iota=2
d = "xiaoming" //iota=3
e = 18 //iota=4
f //同上f=18 iota=5
g = iota //g=6 iota=6
h //h=7 iota=7
)
//新的常量组不会继承iota计数
const (
i = iota //i=0 iota=0
j //j=1 iota=1
k //k=2 iota=2
)
func main() {
fmt.Println(a, b, c, d, e, f, g, h, i, j, k)
}
输出结果(iota:蓝色,字符串:绿色,整型:橙色):
0 1 2 xiaoming 18 18 6 7 0 1 2
五、运算符
1、算数运算符
假设变量a=10,b=3,算数运算符示例如下,其中a/b的结果为整数,如果a和b都是浮点数,结果则为浮点数。
运算符两边的类型需要一致。
运算符 | 作用 | 示例 |
---|---|---|
+ | 加 | a+b结果13 |
- | 减 | a-b结果7 |
* | 乘 | a*b结果30 |
/ | 除 | a/b结果3 |
% | 求余数 | a%b结果1 |
++ | 自增1 | a++结果11 |
-- | 自减1 | b--结果2 |
2、关系运算符
假设变量a=10,b=3
运算符 | 作用 | 示例 |
---|---|---|
== | 等于 | a==b结果false |
!= | 不等于 | a!=b结果true |
< | 小于 | a<b结果false |
> | 大于 | a>b结果true |
<= | 小于等于 | a<=b结果false |
>= | 大于等于 | a>=b结果true |
3、逻辑运算符
假设变量a=true,b=false
运算符 | 作用 | 示例 |
---|---|---|
&& | 逻辑and | a&&b结果false |
|| | 逻辑or | a||b结果true |
! | 逻辑not | !(a&&b)结果true |
4、位运算符
假设变量a=0100,b=0110
运算符 | 作用 | 示例 |
---|---|---|
& | 与运算 | a&b结果 |
| | 或运算 | a|b结果 |
^ | 异或运算 | a^b结果 |
<< | 左移 | a<<2结果 |
>> | 右移 | b>>2结果 |
5、赋值运算符
学习中。。。
学习资料:
B站-狂神说