go语言基础 | 青训营笔记

49 阅读2分钟

这是我参与「第五届青训营 」笔记创作活动的第1天

本节课的重点内容

主要介绍了go语言的特性,开发环境安装,以及go语言的数据类型,基本语法,异常处理等方面,同时配套了三个课后实操小实验好让我们快速上手go语言。

1.Go语言特性

  1. 语言层面支持协程,可以很方便的写出高性能高并发的代码,而且是开源的
  2. 语法简单,容易上手
  3. 非常丰富的标准库
  4. 完善的生态,和工具链
  5. 有垃圾回收机制,数组安全
  6. 静态链接是一种强类型的语言
  7. 可以快速编译和跨平台

2.Golang安装地址安装好后需要配置环境变量

image.png

3.集成开发环境

可以使用vscode和jetbrains全家桶的goland,新手比较推荐goland。

4.go语言数据类型

var a bool//bool 类型
var a int //数字类型,float32,float64等
var a string //字符串类型

其他类型

//指针,但是go语言的指针和c的不同,它只能做一些在函数传递参数是需要修改原变量内容的情况,他不能做算术运算。
a := 1
var b *int
b = &a
//数组
var a [5]int
//结构体
type user struct {
    name string
    password string
}
//channel该类型可以实现协程之间的通信,可以带缓冲和不带缓冲
a := make(chan int, 5)
//函数
func add (a int, b int) int {
    return a + b
}
//切片,go语言的切片实际上只是一个对底层数组的引用。多个切片可以指向同一个底层数组
a := make([]int, 5)
//map
a := make(map[string]string, 5)

go语言没有面向对象的写法,没有类似class的关键字,如果要面向对象编程,只能为结构体绑定函数

type user struct {
    name string
    password string
}
func (u *user) setPassword(password string) {
     u.password = password
}

go语言没有像java一样的异常处理机制,但是可以利用函数可以有多个返回值这一特性返回异常信息,接收方需要使用err != nil 来判断是否有异常抛出

type user struct {
    name string
    password string
}
func findU(users []suer, name string) (v *user, err error) {
    return nil, errors.New("not fount")
}

课后总结

go语言的特点导致了它在高性能高并发场景的广泛应用,同时近几年来越来越多的公司开始使用go语言。对于高性能分布式系统而言它比其他语言有更高的开发效率,许多的分布式开源项目都是使用的go语言