当前位置:首页 > 编程笔记 > 正文
已解决

唤醒手腕 2023年 B 站课程 Golang 语言详细教程笔记(更新中)

来自网友在路上 140840提问 提问时间:2023-09-27 08:57:01阅读次数: 40

最佳答案 问答题库408位专家为你答疑解惑

0001、1000集GO语言Flag毒誓

唤醒手腕UP猪Pig目标花费1000集进行讲解Go语言视频学习教程(有趣的灵魂,适合小白,不适合巨佬),从2023年3月19日开始,将会一直每天更新,准备在2024年5月1日之前更新完1000集Golang课程,更新不完直播吃完一整只烤卤猪(80斤)全盛晚饭。

最新2023年GoLang视频课程:目标花费1000集进行讲解Go语言视频学习教程(更新中)注入灵魂般的有趣,适合小白,不适合巨佬

0002、Golang编程语言历史

什么是谷歌工程师 20 % 时间?

谷歌工程师 20 % 时间 工作方式,允许工程师拿出 20 % 的时间来研究自己喜欢的项目。

在这里插入图片描述

语音服务 Google Now、谷歌新闻 Google News、谷歌地图 Google Map 上的交通信息等,全都是 20 % 时间的产物。Go 语言最开始也是 20 % 时间的产物。

Go 语言 3 位创始人是谁?

Robert Griesemer(罗伯特 · 格利茨默)Rob Pike(罗伯 · 派克)Ken Thompson(肯 · 汤普森)

Robert Griesemer:在开发 Go 之前是 Google V8、Chubby 和 HotSpot JVM 的主要贡献者。

Rob Pike:曾是贝尔实验室(Bell Labs)的 Unix 团队,和 Plan 9 操作系统计划的成员。他与 Thompson 共事多年,并共创出广泛使用的 UTF-8 字元编码。

Ken Thompson:主要是 B 语言、C 语言的作者、Unix 之父。1983 年图灵奖(Turing Award)和 1998 年美国国家技术奖(National Medal of Technology)得主。他和 Dennis Ritchie 是 Unix 的原创者。

在这里插入图片描述
为什么 Go 语言 叫做 Go 语言?

这是一封由 Rob Pike 在 2007 年 9 月 25 号,星期二,下午 3:12 回复给 Robert Griesemer、Ken Thompson 的有关编程语言讨论主题的邮件,邮件正文大意为:在开车回家的路上我得到了些灵感。给这门编程语言取名为 go,它很简短,易书写。工具类可以命名为:goc、 gol、goa。交互式的调试工具也可以直接命名为 go 。语言文件后缀名为 .go 等等。

这就是 Go 语言名字的来源,自此之后 Robert、Rob 和 Ken 三个人开始在 Google 内部进行了研发,一直到了 2009 年,Go 正式开源了,Go 项目团队将 2009 年 11 月 10 日,即该语言正式对外开源的日字作为其官方生日。源代码最初托管在 http://code.google.com 上,之后几年才逐步的迁移到 GitHub 上。

Go 语言 LOGO 是什么?

在这里插入图片描述

Go 语言的 logo 是 Rob Pike 的妻子 Renee French 设计的,她是一位才华横溢的插画家。

某梗 Golang Logo 灵感也来自于 《海贼王》

在这里插入图片描述

GO 语言 / C 语言 / Python 比较

Go 语言以其近 C 的执行性能和近解析型语言的开发效率,以及近乎于完美的编译速度,已经风靡全球。很多人将 Go 语言称为 21 世纪的 C 语言,因为 Go 不仅拥有 C 的简洁和性能,而且针对多处理器系统应用程序的编程进行了优化,很好的提供了 21 世纪互联网环境下服务端开发的各种实用特性。

在这里插入图片描述

0003、下载安装GO语言环境

谷歌公司 Golang 官方网站:https://go.dev/

在这里插入图片描述

.dev 域名主要是为开发者设计的,要求强制使用 HTTPS 来阻止广告恶意程序和 ISP 植入的跟踪代码。

特别注意:官方网站首次访问会比较慢,要耐心等一段时间等浏览器加载完毕。

中国地区 Golang 官网:https://golang.google.cn/

.CN 域名是中国国家顶级域名,是以 .cn 为后缀的域名,包括在 .CN 下直接注册的二级域名和在 .CN 二级域下注册的三级域名。

Java : JDK java develop kits
Python:python 解析器(cpython)

Golang 环境包下载(详细的安装教程 B 站有讲解)

下载链接:https://golang.google.cn/dl/

在这里插入图片描述
Go语言环境包目录结构
在这里插入图片描述
配置环境变量

在这里插入图片描述
补充 path 环境变量:%GOROOT%\bin

Windows操作系统中的PATH环境变量(Path Environment Variable)是一个非常重要的系统环境变量,在系统中起着非常重要的作用。

path 环境变量作用

查找可执行文件: PATH环境变量指定了一组目录的路径,操作系统会在这些路径中查找可执行文件(例如.exe、.bat、.cmd等),因此,当您在命令提示符或运行对话框中输入一个命令时,操作系统会按照PATH中的顺序搜索这些目录,以找到并执行相应的可执行文件。这使得您可以在任何目录下运行系统中已安装的可执行文件,而不必提供完整的路径。

便于运行脚本和命令: 如果您编写了自定义的批处理文件(.bat或.cmd)或脚本文件,可以将这些文件所在的目录添加到PATH中,这样您可以从任何位置运行它们,而不必在命令行中输入完整路径。

简化开发环境配置: 对于开发人员来说,PATH环境变量对于配置开发工具和编程环境非常重要。将编程语言的解释器、编译器、开发工具和相关的库文件所在的目录添加到PATH中,可以使开发过程更加顺利,无需每次都手动指定路径。

系统资源管理: 某些系统和应用程序需要访问特定的工具或资源文件,这些文件可能位于不同的目录中。通过使用PATH环境变量,可以简化对这些资源的管理和访问。

注意:编辑PATH环境变量时要小心,不要删除现有的重要路径,以免影响系统或应用程序的正常运行。

0004、编写HelloWorld程序

合格的程序员脱发皆由 Helloworld 开始 - - - 唤醒手腕

package mainimport "fmt"func main() {fmt.Println("Hello, 世界")
}

在Go语言中,go rungo build是两个常用的命令,它们用于不同的目的,并且在开发过程中有不同的用途。以下是它们的主要区别:

go run

进行对你写的程序代码进行编译操作,在编译后立即执行程序,生成一个临时文件,并没有可执行文件生成。

  • go run用于直接运行Go源代码文件,而不需要显式地生成可执行文件。
  • 当您使用go run命令时,它会编译您的代码并立即执行生成的可执行文件,然后输出程序的标准输出(如果有的话)。
  • 这在开发和测试阶段非常方便,因为它允许您快速查看和调试代码的输出,而无需手动编译并运行可执行文件。

示例用法

go run main.go

go build

  • go build用于编译Go源代码文件,并生成可执行文件,该可执行文件可以在需要时运行。
  • 当您使用go build命令时,它会将Go源代码编译成一个可执行文件(默认情况下与源代码文件名相同),该可执行文件位于当前目录。
  • 这适用于将Go应用程序部署到生产环境或与其他工具集成,因为它生成了一个独立的可执行文件,您可以多次运行它而无需重新编译。

示例用法

go build -o myapp main.go

总之,go run主要用于快速开发和测试,而go build用于生成可执行文件,以便将Go应用程序部署到不同的环境中。在实际开发中,这两个命令通常会结合使用,先使用go run来验证代码,然后使用go build生成可执行文件以进行部署。

注意:使用 go build 生成了可执行文件,那么不论当前的环境有没有 go 开发语言环境,都可以执行该可执行文件。

0005、安装Goland开发者工具

JetBrains 公司并没有一个名为 “Goland” 的产品。然而,我认为你可能在提到 “GoLand”,这是 JetBrains 为 Go 编程语言开发的一款集成开发环境(IDE)。

GoLand 是一个专门为 Go 语言开发者设计的集成开发环境,它提供了一系列功能和工具,旨在提高 Go 语言开发的效率和质量。

安装 go 开发者工具

安装 go 开发者工具:goland vscode(微软)goland 下载官网:https://www.jetbrains.com

在这里插入图片描述

go env

go env 命令用于打印查看Go开发包的环境配置信息

go env

Go 环境配置信息

GOBIN		编译器和链接器的安装目录,存放可执行文件的目录的绝对路径。
GOROOT		Golang 安装目录。
GOPATH		Golang 工作目录。

GOROOTGOPATH 是与 Go 编程语言相关的两个重要环境变量。它们用于配置和管理 Go 开发环境。

GOROOT 环境变量

  • GOROOT 是指定 Go 语言安装目录的环境变量。它表示 Go 编译器和标准库的安装路径。
  • 在你安装 Go 语言时,你需要指定一个目录作为 Go 的根目录,这个目录通常包含了 Go 的可执行文件、标准库和其他必要文件。
  • 通常情况下,Go 会自动设置 GOROOT 环境变量,但你也可以手动设置它,以确保你的开发环境使用正确的 Go 安装目录。

GOPATH 环境变量

  • GOPATH 是 Go 语言工作区的根目录。它用于存储你的 Go 项目和相关的库。
  • 当你使用 go get 命令来下载和安装第三方库时,这些库将被存储在 GOPATH 下的特定目录结构中。
  • GOPATH 中通常包含三个主要子目录:
    • src:用于存放你的 Go 项目源代码。
    • pkg:用于存放编译后的包对象文件。
    • bin:用于存放可执行文件(例如,通过 go install 构建的可执行文件)。

需要注意的是,Go 1.11 版本引入了 Go Modules,这是一种更现代的依赖管理机制,允许开发者在不依赖于 GOPATH 的情况下管理项目依赖。在使用 Go Modules 的项目中,你不再需要设置 GOPATH,而是可以在项目目录中使用 go.modgo.sum 文件来管理依赖。

总之,GOROOTGOPATH 是 Go 开发环境中的两个重要概念,它们分别表示 Go 安装目录和工作区的根目录。但随着 Go 语言的发展,Go Modules 已经成为更常见和推荐的依赖管理方式,因此在新的项目中,你可能不需要设置 GOPATH

0006、安装vscode开发者工具

Vscode 官方网站:https://code.visualstudio.com/

在这里插入图片描述

上节课 Goland 开发者工具(x)

go: go.mod file not found in current directory or any parent directory; see ‘go help modules’

GO111MODULE 是 Go 1.11 引入的新版模块管理方式。GO111MODULE 环境变量用于开启或关闭 Go 语言中的模块支持,它有 off、on、auto 三个可选值,默认为 auto。

  • GO111MODULE=off
    无模块支持,go 会从 $GOPATH 文件夹和 vendor 目录中寻找依赖项。

  • GO111MODULE=on
    模块支持,go 忽略 $GOPATH 文件夹,只根据 go.mod 下载依赖。

  • GO111MODULE=auto
    在 $GOPATH/src 外层且根目录有 go.mod 文件时,开启模块支持;否者无模块支持。

go: no module declaration in go.mod. To specify the module path:
go mod edit -module=example.com/mod

0007、fmt.print打印函数

fmt 包实现了类似C语言 printf 和 scanf 的格式化 I/O。

go 内置包 - fmt 包:fmt.print

在这里插入图片描述

什么是格式化输出?简单说就是挖个坑,再拿东西去填(什么样的坑,就填什么东西)

Golang 占位符介绍

%v值的默认格式 variable%ttrue 或 false bool%b表示二进制 binary%o表示八进制 octonary%d表示十进制 decimal%x表示为十六进制 使用 a-f hex%X表示为十六进制 使用 A-F hex%c表示值对应的 unicode 码值 code%f表示浮点数(默认精度为 6)

0008、Go语言变量命名规则

变量名的首字母是:下划线 _ 、字母

变量名的非首字母部分是:下划线 _ 、字母、数字

例如:

_a、b1、a_

注意:理论上汉字也可以作为变量名称,但是不推荐使用汉字作为变量名,原因是你懂的。

package mainimport "fmt"func main() {var 蔡徐坤 = "鸡你太美"fmt.Printf("%v", 蔡徐坤)
}

Go语言 25个关键字

在这里插入图片描述

包相关: import、 package
声明相关: var、 const、 type、 struct、 interface、 func、 chan、 map、 go
循环相关: for、 range
条件判断相关: if、 else、 switch、 select、 case
中断或返回: return、 goto(嵌套 for 循环 goto 大法)、 fallthrough、 break、default、 continue
延迟执行: defer

Go 语言保留字

常量: true、false、iota(自动递增数字的常量定义)、nil(例如:python None、java null、c++ NULL)
整型:int、 int8 占1个字节、 int16 占2个字节、 int32 占4个字节、 int64 占8个字节
无符号整型:uint、 uint8、 uint16、 uint32、 uint64、 uintptr
浮点型:float32、 float64、 complex64、 complex128 
其他:bool、byte、 rune(unicode 字符问题)、string、 error
函数: make、len、cap、new、append、copy、close、delete、complex、real、imag、panic、 recover
int 		类型大小为 8 字节 和计算机系统保持一致
int8	 	类型大小为 1 字节
int16		类型大小为 2 字节
int32 		类型大小为 4 字节
int64 		类型大小为 8 字节
package mainimport "fmt"
import "unsafe"func main() {var i1 int = 0var i2 int8 = 0var i3 int16 = 0var i4 int32 = 0var i5 int64 = 0fmt.Println(unsafe.Sizeof(i1))fmt.Println(unsafe.Sizeof(i2))fmt.Println(unsafe.Sizeof(i3))fmt.Println(unsafe.Sizeof(i4))fmt.Println(unsafe.Sizeof(i5))
}

注意:unsafe.Sizeof() 只返回数据类型的大小,不管引用数据的大小,单位为 Byte

unsafe 是什么?

unsafe 库让 golang 可以像 C 语言一样操作计算机内存,但这并不是 golang 推荐使用的,能不用尽量不用,就像它的名字所表达的一样,它绕过了 golang 的内存安全原则,是不安全的,容易使你的程序出现莫名其妙的问题,不利于程序的扩展与维护。

查看计算机是几位的?

cmd > systeminfo系统类型:x64-based PC

0009、算数运算符和关系运算符

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"唤醒手腕 2023年 B 站课程 Golang 语言详细教程笔记(更新中)":http://eshow365.cn/6-14562-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!