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

news2024/11/25 12:51:17

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 main

import "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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1043033.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(主)9.26锁存器状态机方法、题解大综合(加码加码加码)

触发器 D D锁存器就是在有时钟信号时,D信号是啥,Q就是啥,并且在时钟信号消失时,锁存住消失前一刻的信号状态 主从D锁存器中,D信号是主锁存器的输入信号,主锁存器的信号是从锁存器的输入信号 用D实现的电…

苹果电脑专业的条形码工具iBarcoder:助力高效条形码生成,提升工作效率

iBarcoder for mac是Mac os平台上的一款优秀条码生成软件。它可以帮助用户建立不同类型的条形码,并允许用户设计并打印自己的条码标签,创建条码图形的零售包装、书籍、贴纸等。 在iBarcoder中,用户可以方便地创建专业的条形码标签&#xff0…

Linux服务器安装Anaconda 配置远程jupyter lab使用虚拟环境

参考的博客: Linux服务器安装Anaconda 并配置远程jupyter lab anaconda配置远程访问jupyter,并创建虚拟环境 理解和创建:Anaconda、Jupyterlab、虚拟环境、Kernel 下边是正文了。 https://www.anaconda.com/download是官网网址,可…

C/C++进程线程超详细详解

目录 前言 一、进程基础 1.进程概念 2.进程特征 3.进程状态(如图清晰可见) 4,进程的标识 实例代码如下: 5.进程的种类 实例shell脚本程序如下: 二、进程API 1.创建子进程 实例代码如下: 2.exec函数族 函数…

ptmalloc源码分析 - free()函数的实现(10)

目录 一、步骤1-标记MMAP分配的使用munmap_chunk释放 二、步骤2-释放的是小块内存,则chunk放入fastbin 三、步骤3-如果不是MMAP分配,则释放到unsorted bins 四、步骤4-如果nextchunk 就是Top chunk,则直接扩容Top chunk 五、步骤5-如果释…

分享从零开始学习网络设备配置--任务4.1 IPv6地址的基本配置

任务描述 某公司构建了互联互通的办公网,需要不断扩大网络规模。网络管理员小赵决定采用IPv6的地址,满足公司网络规模的未来发展。 由于IPv4地址耗尽及IPv4地址区域分配不均衡,成为运营商必须面临的一个问题。另外随着互联网的商业化&#…

【python】将python脚本打包成可执行的.exe文件 推荐使用auto-py-to-exe

将python脚本打包成可执行的exe文件 1.不推荐使用网上流行的打包程序,主要是有以下几点,一、cx_freeze与Pyinstaller都是命令行的形 式,且对于Pyinstaller的打包常常需要打包完成后,再修改打包后的原路径,二、非可视…

vue wangEditor富文本编辑器 默认显示与自定义工具栏配置

1.vue 显示wangEditor富文本编辑器 <template><div style"border: 1px solid #ccc;"><Toolbar style"border-bottom: 1px solid #ccc" :editor"editor" :defaultConfig"toolbarConfig" :mode"mode"/><…

Vue-diff算法和双向数据绑定原理

Vue–diff算法 我们提到了vue–diff算法之前先说一下关于vue的编译过程 一、Vue的编译过程主要分为以下的几个步骤&#xff1a; 1&#xff0c;解析模板&#xff1a;Vue会将模板解析语法树AST&#xff0c;并且对其中的指令和元素进行标记。 2&#xff0c;优化静态内容&#…

VUE的基本使用——hello,vue

一、准备一个容器root 二、创建一个Vue实例 三、配置容器 四、配置数据 五、将数据渲染到容器中 总结 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthde…

【挑战开发100个项目 | 1. C语言学生管理系统】

本项目是一个简易的学生信息管理系统&#xff0c;用户可以通过命令行界面完成学生信息的增加、删除、修改、查询、排序和列表展示等功能。数据以txt文件形式存储&#xff0c;实现了数据持久化。项目采用模块化设计&#xff0c;具有较好的可读性和扩展性。 一&#xff0c;开发环…

服装租赁小程序商城的作用是什么

如毕业礼服、演出服、场景拍照服、拍戏拍段子等很多人并不会直接全价购买&#xff0c;由于穿着次数少&#xff0c;所以服装租赁在市场中的需求也不少。 但传统线下服装租赁商家也很难拓展到客户&#xff0c;而需求者也无法快速触达到商家&#xff0c;线上经营没有自己的平台&a…

自学WEB后端03-Node.js 语法

学习后端路线&#xff1a; JavaScript 基础语法 Node,js 内置 API 模块 (fs、 path、 http等) 第三方 API 模块 (express、mysql等) 今天主要回顾下Node.js 语法 Node.js 是基于 Chrome V8 引擎的 JavaScript 运行环境&#xff0c;它提供了一种能够在服务器端运行 JavaScr…

如何使用php提取文章中的关键词?PHP使用Analysis中英文分词提取关键词

1、下载Analysis&#xff0c;创建test.php测试 2、引入Analysis实现中文分词 <?php include "./Analysis/Analysis.php";$annew \WordAnalysis\Analysis(); $content"机器学习是一门重要的技术&#xff0c;可以用于数据分析和模式识别。"; //10分词数…

Python3操作MySQL8.XX创建表|CRUD基本操作

Python3操作MySQL8.XX创建表|CRUD基本操作 Python3操作SQLite3创建表主键自增长|CRUD基本操作 一&#xff1a; Python3操作Mysql数据库建表 import pymysqlPython3操作Mysql创建表&#xff1a; # 打开数据库连接 db pymysql.connect(host"localhost", user"您…

R语言绘制环状柱状堆积图+分组+显著性

无叠加、显著性的代码&#xff1a; #设置工作环境 rm(listls()) setwd("D:/Desktop/0000/code-main/条形图")#加载R包 library(ggplot2) # Create Elegant Data Visualisations Using the Grammar of Graphics library(tidyverse) # Easily Install and Load the Ti…

联邦学习应用研究现状及发展趋势

本文章主要参考第32届国际人工智能联合会议&#xff08;IJCAI&#xff09;上由清华大学人工智能研究院知识工程研究中心&#xff08;KEG&#xff09;、北京智谱华章科技有限公司、开放群岛开源社区联合编写的《2023联邦学习全球研究与应用趋势报告》&#xff0c;对重点内容进行…

机器学习算法基础--K-means应用实战--图像分割

目录 1.项目内容介绍 2.项目关键代码 3.项目效果展示 1.项目内容介绍 本项目是将一张图片进行k-means分类&#xff0c;根据色彩k进行分类&#xff0c;最后比较和原图的效果。 题目还是比较简单的&#xff0c;我们只要通过k-means聚类&#xff0c;一类就是一种色彩得出聚类之…

一创聚宽的实盘就要关闭了,有没有好用的实盘平台推荐

挺多的&#xff0c;比较普遍的是QMT和Ptrade&#xff0c;python语言&#xff0c;易上手&#xff0c;通用性好&#xff0c;要说适用性可以考虑Ptrade&#xff0c;问一下你的客户经理有没有&#xff0c;用Ptrade的券商也多&#xff0c;如果之前用一创聚宽你可以无缝切换&#xff…

网络安全内网渗透之DNS隧道实验--dnscat2直连模式

目录 一、DNS隧道攻击原理 二、DNS隧道工具 &#xff08;一&#xff09;安装dnscat2服务端 &#xff08;二&#xff09;启动服务器端 &#xff08;三&#xff09;在目标机器上安装客户端 &#xff08;四&#xff09;反弹shell 一、DNS隧道攻击原理 在进行DNS查询时&#x…