这是我参与「第五届青训营」伴学笔记创作活动的第 1 天
何为Go语言
Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。 对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于游戏服务端的开发而言是再好不过了。
第一个程序hello world
package main
import (
"fmt"
)
func main() {
fmt.Println("hello world")
}
Go语言的基础组成有以下几个部分:
-
包声明 -
引入包 -
函数 -
变量 -
语句 -
注释
变量定义
1. var a = "initial"
2.
3. var b, c int = 1, 2
4.
5. var d = true
6.
7. var e float64
8.
9. f := float32(e)
10.
11. g := a + "foo"
最常用第九行这种类型定义
循环和判断
Go语言只有一种循环,就是for循环
for n := 0; n < 5; n++
{
if n%2 == 0
{
continue
}
fmt.Println(n)
}
for后面循环条件没有括号
判断
if 7%2 == 0 {
fmt.Println("7 is even")
} else {
fmt.Println("7 is odd")
}
和循环一样,if判断条件后面也没有括号
数组和函数
数组定义
var a [5]int
a[4] = 100
fmt.Println("get:", a[2])
fmt.Println("len:", len(a))
b := [5]int{1, 2, 3, 4, 5}
fmt.Println(b)
var twoD [2][3]int
函数定义
func add2(a, b int) int {
return a + b
}
func exists(m map[string]string, k string) (v string, ok bool) {
v, ok = m[k]
return v, ok
}
切片
Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go 中提供了一种灵活,功能强悍的内置类型切片("动态数组"),与数组相比切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大。
切片定义:
slice1 := make([]type, len)
切片初始化:
s :=[] int {1,2,3 }
Map集合
定义Map
var map_variable map[key_data_type]value_data_type
map_variable := make(map[key_data_type]value_data_type)
Go错误处理
Go 语言通过内置的错误接口提供了非常简单的错误处理机制。 error类型是一个接口类型,这是它的定义:
type error interface {
Error() string
}
函数通常在最后的返回值中返回错误信息。使用errors.New 可返回一个错误信息:
func Sqrt(f float64) (float64, error) {
if f < 0 {
return 0, errors.New("math: square root of negative number")
}
// 实现
}
在下面的例子中,我们在调用Sqrt的时候传递的一个负数,然后就得到了non-nil的error对象,将此对象与 nil比较,结果为true,所以fmt.Println(fmt包在处理error时会调用Error方法)被调用,以输出错误,请看下面调用的示例代码:
result, err:= Sqrt(-1)
if err != nil {
fmt.Println(err)
}
实战项目
- 猜数字游戏
- 在线终端词典
- SOCKS5代理
引用
- 字节内部课程
- 菜鸟教程