GO学习笔记 1 环境安装与配置
- 六、数据类型
- 七、声明变量
一、 GO语言简介
GO 2007年由Ken Tompson(贝尔实验室Unix团队成员,C语言、Unix和Plan 9的创始人之一)、Rob Pike(贝尔实验室 Unix 团队成员)、Robert Griesemer(Google职员,参与开发Java HotSpot虚拟机,并负责V8 引擎的代码生成部分) 创建, 2019年正式对外发布。
Go 是编译型语言。
GO语言的特性:
- 语法简单
- 并发模型,GO为并发而生。
- 内存分配
- 垃圾回收
- 静态链接
- 标准库
- 工具链
二、windows开发环境配置
1. 下载golang
https://golang.org/dl/ 我这里下载 go1.15.6.windows-amd64.msi
2. 安装
安装后把可以把 D:\tools\Go\bin 放到path路径。
三、CentOS 环境
wget https://golang.org/doc/install?download=go1.15.6.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.15.6.linux-amd64.tar.gz
vim /etc/profile
export PATH=$PATH:/usr/local/go/bin
source /etc/profile
go version
显示:
go version go1.15.6 linux/amd64
四、测试
1. 新建测试文件 test.go
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
2. 测试运行
go run test.go
3. 测试编译
go build test.go
五、一些基础语法
1. 行分隔符
换行即可。如果在同一行的语句可以使用分号作分隔符。
2. 注释
与C类似,使用//
或/* */
六、数据类型
1. 布尔型
var b bool = true
2. 数字类型
- 整形 int: uint8 uint16 uint32 uint64 int8 int16 int32 int64-
- 浮点型 float32 float64 complex64 complex128
- byte(类似uint8),rune(类型int32),uint(32或64位),int(类似uint),uintptr无符号整形,用于存放一个指针
3. 字符串类型
4. 派生类型
- 指针类型 Pointer
- 数组类型
- 结构化类型
- Channel类型
- 函数类型
- 切片类型
- 接口类型 Interface
- Map类型
七、声明变量
1. 使用 var
关键字
var 变量名称 类型
可以一次声明多个变量。
package main
import "fmt"
func main() {
var a string = "Runoob"
fmt.Println(a)
var b, c int = 1, 2
fmt.Println(b, c)
}
2. 常量声明
const 变量名 [类型]=value
3. iota ,特殊常量
可以被编译器修改值,一个计数器。
八、条件语句
条件不需要使用括号 ,如:
package main
import "fmt"
func main() {
/* 定义局部变量 */
var a int = 10
/* 使用 if 语句判断布尔表达式 */
if a < 20 {
/* 如果条件为 true 则执行以下语句 */
fmt.Printf("a 小于 20\n" )
}
fmt.Printf("a 的值为 : %d\n", a)
}
九、循环语句
package main
import "fmt"
func main() {
for true {
fmt.Printf("这是无限循环。\n");
}
}
十、函数定义
func function_name( [parameter list] ) [return_types] {
函数体
}
函数允许有多个返回值,如:
package main
import "fmt"
func swap(x, y string) (string, string) {
return y, x
}
func main() {
a, b := swap("Google", "Runoob")
fmt.Println(a, b)
}
十一、数组
定义数组:
var 数组变量名 [大小] 数据类型
十二、指针
定义指针:
var 指针名称 *指针类型
取地址类似c语言使用 &
,示例:
package main
import "fmt"
func main() {
var a int= 20 /* 声明实际变量 */
var ip *int /* 声明指针变量 */
ip = &a /* 指针变量的存储地址 */
fmt.Printf("a 变量的地址是: %x\n", &a )
/* 指针变量的存储地址 */
fmt.Printf("ip 变量储存的指针地址: %x\n", ip )
/* 使用指针访问值 */
fmt.Printf("*ip 变量的值: %d\n", *ip )
}
空指针值是nil