Go学习笔记(一)

148 阅读3分钟

Go语言基础

2023年5月12日

​ mark下自己的笔记与心得

Go的简介

  1. Go 语言也称为 Golang,是由 Google 公司开发的一种静态强类型、编译型、并发型、并具有垃圾回收功能的编程语言。
  2. Go语言的用途众多,可以进行网络编程、系统编程、并发编程、分布式编程。
  3. 部署简单、并发性好、语言设计良好、执行性能好。
  4. Go从C语言继承了相似的表达式语法、控制流结构、基础数据类型、调用参数传值、指针等很多思想,还有C语言一直所看中的编译后机器码的运行效率以及和现有操作系统的无缝适配。
  5. Go语言没有类和继承的概念,所以它和Java或C++看起来并不相同。但是它通过接口(interface)的概念来实现多态性。

Go是一门编译型语言,编译型语言的速度要比解释型语言的速度快

Go程序运行顺序:

  1. 创建 Go 程序
  2. 保存文件
  3. 编译程序
  4. 运行编译得到的可执行文件
  5. Go 自带了编译器,因此无须单独安装编译器。

学习Go的目的

  1. 旨在应对创建大型并发网络程序面临的挑战。

  2. Go 语言在 3 个条件之间做到了最佳的平衡:快速编译,高效执行,易于开发。

Go的特性

  1. 语法简单
  2. Go 语言的语法规则严谨,没有歧义,任何人写出的代码都基本一致,这使得 Go 语言简单易学。
  3. 并发模型,从根本上将一切都并发化,运行时用 Goroutine 运行所有的一切,包括 main.main 入口函数。这使得语法 上的并发编程变得极为容易,无须处理回调,无须关注线程切换,仅一个关键字,简单而自然。
  4. 内存分配
  5. 垃圾回收,相比 Java,Go 面临的困难要更多。因指针的存在,所以回收内存不能做收缩处理。幸好,指针运算被阻止,否则要做到精确回收都难。
  6. 强大的标准库,其中值得称道的是 net/http,仅须简单几条语句就能实现一个高性能 Web Server

Go为了并发而生:

​ Go 语言的并发是基于 goroutine 的,goroutine 类似于线程,但并非线程。可以将 goroutine 理解为一种虚拟线程。Go 语言运行时 会参与调度 goroutine,并将 goroutine 合理地分配到每个 CPU 中,最大限度地使用 CPU 性能。

​ 多个 goroutine 中,Go 语言使用通道(channel)进行通信,通道是一种内置的数据结构,可以让用户在不同的 goroutine 之间同步 发送具有类型的消息。这让编程模型更倾向于在 goroutine 之间发送消息,而不是让多个 goroutine 争夺同一个数据的使用权。

学习了go的特性后,对使用Java进行并发编程的阴影瞬间有了希望,接下来将学习go基础语法