唤醒手腕 Go 语言开发学习笔记(基本简介、环境安装)

news/2024/11/9 2:01:40/

1. Go语言简介

Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。

Go语言介绍、历史

Go是基于Inferno操作系统所开发的。Go于2009年11月正式宣布推出,成为开放源代码项目,并在Linux及Mac OS X平台上进行了实现,后来追加了Windows系统下的实现。在2016年,Go被软件评价公司TIOBE 选为“TIOBE 2016 年最佳语言”。

Go语言 vs C语言

Go的语法接近C语言,但对于变量的声明有所不同。Go支持垃圾回收功能。Go的并行模型是以东尼·霍尔的通信顺序进程(CSP)为基础,采取类似模型的其他语言包括Occam和Limbo,但它也具有Pi运算的特征,比如通道传输。

在1.8版本中开放插件(Plugin)的支持,这意味着现在能从Go中动态加载部分函数。

Go语言 vs C++语言

Go语言与C++相比,Go并不包括如枚举、异常处理、继承、泛型、断言、虚函数等功能,但增加了 切片(Slice) 型、并发、管道、垃圾回收、接口(Interface)等特性的语言级支持。

Go 2.0版本将支持泛型,对于断言的存在,则持负面态度,同时也为自己不提供类型继承来辩护。

Go语言 vs Java语言

不同于Java,Go内嵌了关联数组(也称为哈希表 Hashes 或字典 Dictionaries),就像字符串类型一样。

Go语言应用领域

服务器编程、开发云平台、区块链、分布式系统、网络编程

Go语言编译器

当前有两个Go编译器分支,分别为官方编译器gc和gccgo。官方编译器在初期使用C写成,后用Go重写从而实现自举。Gccgo是一个使用标准GCC作为后端的Go编译器。

官方编译器支持跨平台编译(但不支持CGO),允许将源代码编译为可在目标系统、架构上执行的二进制文件。

2. Go语言安装开发环境

下载安装并配置环境变量:下载地址:https://golang.google.cn/dl/

在这里插入图片描述

这里注意,安装路径选择一个比较好找的路径,例如:E:\Environment\go,其他安装都选择”下一步“即可。

配置 go 语言环境变量

安装完成后,把E:\Environment\go\bin目录添加到环境变量,这里就可以使用go了。

在这里插入图片描述

如果采用exe模式安装go语言的环境,是会自动配置环境变量的。

测试本地安装go版本

在命令行输入 go version 查看版本,输出结果如下所示。

C:\Users\HP>go version
go version go1.19.5 windows/amd64

go.exe 编译器 commands 命令参数

The commands are:bug         start a bug reportbuild       compile packages and dependenciesclean       remove object files and cached filesdoc         show documentation for package or symbolenv         print Go environment informationfix         update packages to use new APIsfmt         gofmt (reformat) package sourcesgenerate    generate Go files by processing sourceget         add dependencies to current module and install theminstall     compile and install packages and dependencieslist        list packages or modulesmod         module maintenancework        workspace maintenancerun         compile and run Go programtest        test packagestool        run specified go toolversion     print Go versionvet         report likely mistakes in packages

go 环境 env 配置

go env -json:将环境变量键值对以json形式进行展示

C:\Users\HP>go env
set GO111MODULE=
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\HP\AppData\Local\go-build
set GOENV=C:\Users\HP\AppData\Roaming\go\env
······

go 语言 env 变量

env 变量变量说明
GO111MODULEmodule模式开启,在包管理那篇文章有提到
GOBIN当我们使用go install命令编译和打包应用程序时,该命令会将编译后二进制程序打包GOBIN目录,一般我们将GOBIN设置为GOPATH下的bin目录
GOPATH表示go的工作目录,这个目录指定了需要从哪个地方寻找GO的包、可执行程序等
GOCACHEgo缓存目录,可以使用 go clean -cache 清空,如果目录变得很大的话
GOENVGO全局环境变量
GOMODCACHEgo mod进行包管理时的缓存目录,一般为GOPATH下的pkg下的mod目录,在包管理那篇文章有提到
GOOS当前操作系统
GOROOTGo语言的安装目录
GOPROXY代理,在包管理那篇文章有提到
GOPRIVATEgo get通过代理服务拉取私有仓库(企业内部module或托管站点上的private库),而代理服务不可能访问到私有仓库,会出现了404错误,于是go1.13后有了这个变量设置
GOTOOLDIRGO工具的安装目录,有cgo.exe等
GOVERSIONgo的版本号

配置 Proxy 代理配置(阿里)

由于国内的网络环境,我们可以通过配置GOPROXY避免DNS污染导致的模块拉取缓慢或失败的问题,加速你的构建。

# Windows
go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/  # macOS 或 Linux 
export GOPROXY=https://mirrors.aliyun.com/goproxy/

3. Goland开发者工具

开发者工具 Tool

链接:https://www.jetbrains.com/zh-cn/go/download/#section=windows

在这里插入图片描述
Goland 2023 Special Anniversary Edition

在这里插入图片描述

go 语言程序案例 hello world

package mainimport "fmt"func main() {fmt.Printf("hello world")
}

运行结果:

GOROOT=E:\Environment\go #gosetup
GOPATH=C:\Users\HP\go #gosetup
E:\Environment\go\bin\go.exe build -o C:\Users\HP\AppData\Local\Temp\GoLand\___go_build_main_go.exe C:\Users\HP\GolandProjects\awesomeProject\main.go #gosetup
C:\Users\HP\AppData\Local\Temp\GoLand\___go_build_main_go.exe
hello world
Process finished with the exit code 0

vscode 安装 go

Windows平台按下 Ctrl+Shift+P,我们在这个输入框中输入>go:install,下面会自动搜索相关命令,我们选择Go:Install/Update Tools这个命令,然后安装所有的依赖包。

安装需要一定的时间,安装完之后重启即可。

main.go:1:1: expected ‘package’, found ‘EOF’
解决方案:按 ctrl+s 保存即可,要在编辑文本 按ctr+s

Vscode 快捷键

在这里插入图片描述

4. Go语言新建项目

早期的go项目使用gopath来管理项目,不方便而且容易出错,从golang 1.11 开始使用gomod管理项目,当然还有第三方模块例如govendor

go mod init mypro

基本流程:1.创建项目 2.初始化项目 3.创建包 4.创建模块 5.相互调用

go mod init 初始化

PS C:\Users\HP\Desktop\字节跳动Go语言\basic_learn_go> go mod init mypro
go: creating new go.mod: module mypro
go: to add module requirements and sums:go mod tidy

Go 语言基本组成说明

属性说明
包声明编写源文件时,必须在非注释的第一行指明这个文件属于哪个包,如package main。
引入包其实就是告诉Go 编译器这个程序需要使用的包,如import "fmt"其实就是引入了fmt包。
函数和c语言相同,即是一个可以实现某一个功能的函数体,每一个可执行程序中必须拥有一个main函数。
变量Go 语言变量名由字母、数字、下划线组成,其中首个字符不能为数字。
语句 / 表达式在 Go 程序中,一行代表一个语句结束。每个语句不需要像 C 家族中的其它语言一样以分号 ; 结尾,因为这些工作都将由 Go 编译器自动完成。
注释和c语言中的注释方式相同,可以在任何地方使用以 // 开头的单行注释。以 /* 开头,并以 */ 结尾来进行多行注释,且不可以嵌套使用,多行注释一般用于包的文档描述或注释成块的代码片段。

需要注意的是:标识符是用来命名变量、类型等程序实体。一个标识符实际上就是一个或是多个字母和数字、下划线_组成的序列,但是第一个字符必须是字母或下划线而不能是数字。

5. Go语言变量

定义变量

声明变量的一般形式是使用 var 关键字,具体格式为:var identifier typename

如下的代码中我们定义了一个类型为int的变量。

package main
import "fmt"
func main() {var a int = 27fmt.Println(a);
} 

在go语言中定义了一个变量,指定变量类型,如果没有初始化,则变量默认为零值。零值就是变量没有做初始化时系统默认设置的值。

数值类型 0、布尔类型 false、字符串 “”(空字符串)

变量没有指定类型

在go语言中如果没有指定变量类型,可以通过变量的初始值来判断变量类型。如下代码

package main
import "fmt"
func main() {var d = truefmt.Println(d)
}

http://www.ppmy.cn/news/11362.html

相关文章

指针进阶篇(2)

进阶指针 🤔前言🤔 一、😊函数指针😊 二、😜函数指针数组😜 三 、😝指向函数指针数组的指针😝 四、🌝回调函数🌝 🍀小结🍀 &…

结构体 · 内存对齐

欢迎来到 Claffic 的博客 💞💞💞 前言: 在初识C语言中简单介绍了结构体,结构体可以理解为不同类型数据的集合体,但是你想过结构体的大小是如何计算的吗?看完这篇博客,你就能给自己答…

测试开发基础 mvn test | 利用 Maven Surefire Plugin 做测试用例基础执行管理

一、需求在测试工作场景中,经常会遇到下面的问题:1、执行自动化测试用例的时候,只想指定某个测试类,或者某个方法,又或者某一类用例等,怎么办?2、想要和 Jenkins 一起进行持续集成,可…

java 数组看这一篇文章就够了

第一章 数组概述 数组介绍1 2 3 41. 数组是多个相同类型数据的组合 2. 数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型 3. 数组属引用类型,数组中的每个元素相当于该对象的成员变量 4. 数组中的数据是有序的,可以通过序号(索引或者下标)获取,索引从0开始数组…

米筐量化终端是什么?

米筐量化终端大家应该也能想象到是应用的终端,是系统执行的终端环节,如果是用在量化方面,那它就是策略定制的终端,是方便投资者输入量化策略执行出来发最终优质目的,精确到细分股票的账户成交量,股价以及融…

刚当上leader,我让组员去开会,他非说有更重要的会

☆ 职场上经常有那么一种情况就是组长喊组员开会,开周会,开晨会,开各种会,而更有一种常见的情况呢就是组长缺失威严,喊组员开会,组员不听话,说有更重要的会议,不想参加。 ☆ 本文将以…

Kettle的安装以及简单使用

Kettle是一款开源免费的ETL工具,ETL全称 Extract - Transform - Load 意味着数据抽取,转换,装载的过程。 ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到…

多线程案例

1.阻塞队列1.1阻塞队列的工作原理阻塞队列本质上还是一个队列,但是在队列的基础上加入了阻塞功能,并且线程安全。那么它的阻塞功能体现在两方面1.当队列为空时,进行出队列操作,就进入阻塞状态2.当队列满了时,进行入队列…