一.go语言简介
go语言是谷歌2009发布的第二款开源编程语言。Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。
go语言非常简练,能用较少的代码实现复杂的功能。
1.go语言的特点
1.高性能、高并发2.语法简单,学习曲线平缓
3.丰富的标准库
4.完善的工具链
5.静态链接
6.快速编译
7.跨平台
8.垃圾回收
正是因为这些特点,go语言正被广泛使用于很多场所。
2.基础结构
import "fmt"
func main() {
fmt.Println("Hello World")
fmt.Println("Hello Go")
}
3.基础语法
一.变量
var声明
- Go语言中的非全局变量声明后必须使用
var s1 string = "abcstring"
fmt.Println(s1)
1.全局变量
//变量声明
var s string
2.批量声明
//批量声明
var (
age int
name string
status bool
)
将变量的类型省略,这个时候编译器会根据等号右边的值来推导变量的类型完成初始化。
3.短变量声明
短变量声明 只能在函数中使用
num := 10
fmt.Println(num)
4.匿名变量
多重赋值下,如果要忽略某个值,可以使用匿名变量(anonymous variable)接收。 用 _ 表示
二.IF语句
go与其他语言的if-else语句语法相似
1.基本结构
if 表达式1
{ 分支1 }
else if 表达式2
{ 分支2 }
else
{ 分支3 }
2.条件选择举例
package main
import "fmt"
var age = 11
func main() {
if age>18 {
fmt.Println("成年")
} else if age==18 {
fmt.Println("18岁")
} else {
fmt.Println("未成年")
}
}
三.For语句
GO语言中没有while循环,只有for循环!!!
1.基础结构
func main() {
for i := 0; i < 10; i++ {
fmt.Println(i)
}
}
2.无限for循环
for循环可以通过break、goto、return、panic语句强制退出循环。
3.键值循环
Go语言中可以使用for range遍历数组、切片、字符串、map 及通道(channel)。
数组、切片、字符串返回索引和值。
map返回键和值。
通道(channel)只返回通道内的值。
package main
import "fmt"
var s = "Hello"
func main() {
for i,v := range s{
fmt.Println(i,v)
}
}
四.SWITCH语句
一个switch只能有一个default分支。
一个分支可以有多个值,多个case值中间使用英文逗号分隔。
分支还可以使用表达式,这时候switch语句后面不需要再跟判断变量。
fallthrough语法可以执行满足条件的case的下一个case。 break,continue用法与Java语言相同
1.基础结构
switch f {
case 1:
语句1
case 2:
语句2
case 3:
...
default:
...
}
2.代码举例
func main() {
f := 3
switch f {
case 1:
fmt.Println("1")
case 2:
fmt.Println("2")
case 3:
fmt.Println("3")
default:
fmt.Println("ERROR")
}
}
五.数组
数组的定义及使用
数组定义与其他语言类似
1.声明数组:var list [6]int
func main() {
//声明数组
var list [6]int
//给数组赋值
for i := 0; i < 6; i++ {
fmt.Println("请输入数字")
fmt.Scan(&list[i])//输入
}
for i := 0; i < len(list); i ++{
fmt.Println(list[i])//输出
}
}
2.声明并初始化数组:var list = [5]int{1,2,3,4,5}
func main() {
//声明数组
var list = [5]int{1,2,3,4,5}
for num := range list{
fmt.Println(num)
}
}
3.只初始化数组中的个别元素:var list = […]int{1:4, 6:49}
func main() {
//声明数组
var list = [...]int{1:4, 6:49}
for num := range list{
fmt.Println(list[num])
}
}
4.声明二维数组: var list [3][2] int
//声明并且初始化二维数组
func main() {
//声明数组
var list = [2][2]int{
{1,2},
{3,4},
}
for i := 0; i < 2; i++{
for j := 0; j < 2; j++{
fmt.Println(list[i][j])
}
}
}
同时,数组也可以作为参数传递到函数中