1 GO语言结构
- 包声明
- 引入包
- 函数
- 变量
- 语句 & 表达式
- 注释
入门第一招
package main
import (
"fmt"
)
func main() {
fmt.Println("hello world")
}
go build hello.go 生成二进制文件 go run hello,go 运行文件
2 GO基础语法
3 GO语言数据类型
- 布尔型 true 和 false
- 数字类型
3.浮点数
4.其他数字类型
4 GO语言变量
一般形式如下
var identifier type // 变量类型在后面
var identifier1,identifier2 type //一次申请多个对象
具体例子如下
package main
import "fmt"
func main() {
var str string = "hello world"
var a, b int = 1, 2
fmt.Println(str)
fmt.Println(a + b)
}
变量声明 1.指定变量类型,如果美欧初始化,则默认为零值 2.根据值自行判定变量类型 3.如果变量有var声明过了,再使用:= 声明变量,就产生编译错误 值类型和引用类型
5 GO语言常量
声明变量前面加个 const
const c_name1, c_name2 = value1, value2
常量可以被用做 枚举
const (
Unknown = 0
Female = 1
Male = 2
)
iota 可以理解为 const 语句的 行索引
package main
import "fmt"
func main() {
const (
a = iota //0
b //1
c //2
d = "ha" //独立值,iota += 1
e //"ha" iota += 1
f = 100 //iota +=1
g //100 iota +=1
h = iota //7,恢复计数
i //8
)
fmt.Println(a,b,c,d,e,f,g,h,i)
}
6 GO语言预算符 基本跟C++里面的一致
1.算术运算符 2.关系运算符 3.逻辑运算符 4.位运算符 5.赋值运算符 6.其他运算符
7 GO语言条件语句
if - else - if 语句
package main
import "fmt"
func main() {
score := 85
if score >= 90 {
fmt.Println("优秀")
} else if score >= 80 {
fmt.Println("良好")
} else if score >= 60 {
fmt.Println("及格")
} else {
fmt.Println("不及格")
}
}
switch 语句
package main
import "fmt"
func main() {
day := 3
switch day {
case 1:
fmt.Println("星期一")
case 2:
fmt.Println("星期二")
case 3:
fmt.Println("星期三")
default:
fmt.Println("其他")
}
}
8 Go 语言循环语句
for循环 1.基本的for循环
for i := 0; i < 5;i ++{
}
2.无限循环
i := 0
for {
if i > 5 {
break
}
}
3.使用for循环遍历数组或切片
numbers := []int{1, 2, 3, 4, 5}
for index, value := range numbers {
fmt.Printf("索引 %d 处的值是 %d\n", index, value)
}
9 GO语言函数
格式如下
func function_name( [parameter list] ) [return_types] {
函数体
}
函数传值跟C语言类似 具有形参 和 实参 的概念
10 语言变量作用域 跟C ++ 一致
全局变量 局部变量
11 GO 语言数组
形式如下
var arrayName [size]dataType
numbers := [5]int{1, 2, 3, 4, 5}//声明并且初始化
12 GO语言指针 跟c++一致
13 GO语言结构体
实例代码如下
type struct_variable_type struct {
member definition
member definition
...
member definition
}
variable_name := structure_variable_type {value1, value2...valuen}
或
variable_name := structure_variable_type { key1: value1, key2: value2..., keyn: valuen}
具体代码例子
package main
import "fmt"
//定义
type student struct {
id int64
name string
}
func main() {
//俩种初始化方式
var a = student{1, "a"}
b := student{id: 1, name: "知行Yi"}
a.name = "Jun不见"//支持点的形式访问变量
fmt.Println(a)
fmt.Println(b)
}
14 GO语言切片 类似于 动态数组 vector
定义切片
package main
import "fmt"
// 定义
type student struct {
id int64
name string
}
func main() {
//定义切片的几种方法
var vector2 []int = make([]int, 5)
vector3 := make([]int, 5)
for i := range vector2 {
fmt.Print(i)
}
for i := range vector3 {
fmt.Print(i)
}
fmt.Println()
//切片初始化
//s :=make([]int,len,cap)
s := make([]int, 3, 5)
fmt.Println(len(s), cap(s))
var c = s[:1] //截取0 - 1
fmt.Println(len(c))
var d = s[1:] //截取1 - 末尾
fmt.Println(len(d))
}
15 GO语言范围(Range)
GO语言中的Range关键字用于for循环中迭代数组,切片,通道或集合的元素。在元素和切片中它返回元素的索引和索引对应的值,在集合中返回key-value对 代码如下
package main
import "fmt"
// 定义
type student struct {
id int64
name string
}
func main() {
//通道
ch := make(chan int, 2)
ch <- 1
ch <- 2
close(ch) //关闭通道
for i := range ch {
fmt.Println(i)
}
//忽略索引
num := []int{2, 3, 4}
for _, i := range num {
fmt.Println(i)
}
//忽略值
for i := range num {
fmt.Println(i)
}
}
16 GO语言Map集合(跟c++ 差不多)
17 GO语言递归(跟c++ 差不多)
18 Go 语言类型转换
直接看实例
package main
import (
"fmt"
"strconv"
)
// 定义
type student struct {
id int64
name string
}
func main() {
//type_name(expression)
var a int = 10
var b float64 = float64(a)
fmt.Println(b)
// 字符串类型转换
str := "123"
num, err := strconv.Atoi(str)
if err != nil {
fmt.Println("类型转换错误", err)
} else {
fmt.Printf("字符串 ‘%s’ 转换为整数 ‘%d", str, num)
}
}