go语言零基础入门第二天(go语言学习笔记1)
go语言(或 Golang)是Google开发的开源编程语言,诞生于2006年1月2日下午15点4分5秒,于2009年11月开源,2012年发布go稳定版。Go语言在多核并发上拥有原生的设计优势,Go语言从底层原生支持并发,无须第三方库、开发者的编程技巧和开发经验。
go是非常年轻的一门语言,它的主要目标是兼具Python 等动态语言的开发速度和C/C 等编译型语言的性能与安全性
go适合做什么- 服务端开发
- 分布式系统,微服务
- 网络编程
- 区块链开发
- 内存KV数据库,例如boltDB、levelDB
- 云平台
目前Go语言已经⼴泛应用于人工智能、云计算开发、容器虚拟化、⼤数据开发、数据分析及科学计算、运维开发、爬虫开发、游戏开发等领域。
Go语言简单易学,天生支持并发,完美契合当下高并发的互联网生态。Go语言的岗位需求持续高涨,目前的Go程序员数量少,待遇好。
抓住趋势,要学会做一个领跑者而不是跟随者。
国内Go语言的需求潜力巨大,目前无论是国内大厂还是新兴互联网公司基本上都会有Go语言的岗位需求。
Go语言的并发是基于 goroutine 的,goroutine 类似于线程,但并非线程。可以将 goroutine 理解为一种虚拟线程。Go 语言运行时会参与调度 goroutine,并将 goroutine 合理地分配到每个 CPU 中,最大限度地使用CPU性能。开启一个goroutine的消耗非常小(大约2KB的内存),你可以轻松创建数百万个goroutine。
goroutine的特点:
- goroutine具有可增长的分段堆栈。这意味着它们只在需要时才会使用更多内存。
- goroutine的启动时间比线程快。
- goroutine原生支持利用channel安全地进行通信。
- goroutine共享数据结构时无需使用互斥锁。
官网:https://golang.org/dl/
中文社区:https://studygolang.com/dl
安装go环境windows
1.双击后点击下一步安装就行
GOROOT是程序安装的目录
GOPATH是一个环境变量,用来表明你写的go项目的存放路径
然后$GOPATH创建三个文件夹
- bin:存放编译后生成的可执行文件
- pkg:存放编译后生成的包/库的归档文件
- src:存放项目和库的源文件
最后验证
> go version
go version go1.17.3 windows/amd64
> go env
set GOROOT=D:\Application\Golang //安装时所在的目录绝对路径
set GOPATH=D:\System\Code\Golang //工作区所在的绝对目录
set GOPROXY=https://proxy.golang.org,direct //go代理地址
set GOSUMDB=sum.golang.org //用于检验module正确性的服务器地址,默认值为sum.golang.org
set GONOPROXY="公司代码地址" //用于配置不走goproxy的代码地址,公司内代码仓库
set GONOSUMDB="公司代码地址" //公司内部的代码在SUMDB也是无法校验的
// GOPROXY=https://proxy.golang.org,direct 由于国内访问不到,所以我们需要换一个proxy,这里推荐使用https://goproxy.io或https://goproxy.cn。
go env -w GOPROXY=https://goproxy.cn,direct //执行命令修改
go env -w GO111MODULE=auto //开启go module支持
1.解压
tar -zxvf go1.20.linux-amd64.tar.gz
2.设置环境变量
sudo vi /etc/profile
export GOROOT=/usr/local/go ##Golang安装目录
export GOPATH=/home/go ##Golang项目目录
export PATH=$PATH:$GOROOT/bin
source /etc/profile
#按esc退出编辑模式, 按:wq保存文件
go version
下载地址:https://code.visualstudio.com/
Visual Studio Code,简称VS Code,它是目前使用人数最多的编辑器。尽管它由微软发布于2015年,与其他热门编辑器相比显得有些年轻,但它在过去几年中一直在不停的更新,它在最新的Stack Overflow调查中被选为Web开发人员中最受欢迎的文本编辑器。
VS Code不仅仅是一个基本的代码编辑器。有人说它更像是IDE而不是代码编辑器,因为它提供了许多通常只在IDE中才有的功能。主要功能包括内置调试工具,智能代码提示,集成终端以及对简易的Git操作(微软刚收购了GitHub)。作为初学者,您可以利用这些功能大大提高编程效率。
在 VS Code中找到的每个功能都完成一项出色的工作,构建了一些简单的功能集,包括语法高亮、智能补全、集成 git 和编辑器内置调试工具等,将使你开发更高效。
编写go代码是会提示安装插件,选择install all,如果没有提示,按住shift ctrl p输入go:install/Update tools
//推荐插件
Go
Code Runner
GitHub Theme //设置主题
Indent-rainbow //彩色标签缩进
Auto Import //自动导包
Auto Close Tag
Auto Rename Tag
Better Comments
//1.vscode 好用的快捷键
行注释: ctrl /
块注释:shift alt a
删除行:ctrl shift k
竖行模式:ctrl alt 上下键
//2.代码快捷命令
pkgm : main包 main主函数
ff : fmt.Printf("", var)
for : for i := 0; i < count; i {}
forr : for _, v := range v {}
fmain: func main() {}
GoLang是Jetbrains家族的Go语言IDE
下载地址:https://www.jetbrains.com/go/download
第一个go程序
package main // 声明 main 包,表明当前是一个可执行程序
import "fmt" // 导入内置 fmt
func main(){ // main函数,是程序执行的入口
fmt.Println("Hello World!") // 在终端打印 Hello World!
}
go run helloWorld.go //运行go程序
go build //在项目目录下执行编译成二进制包
go build -o xxx.exe //默认是项目文件的名字,这样可以改二进制包的名字
//Windows编译成linux执行的文件
SET CGO_ENABLED=0 //禁用CGO
SET GOOS=linux //目标平台是linux
SET GOARCH=amd64 //目标处理器架构是amd64
go build
//Windows编译成mac可执行文件
SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64
go build
//mac编译linux可执行的文件
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build
//mac编译成Windows可执行的文件
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build
//linux编译成mac可执行文件
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build
//linux编译Windows可执行文件
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build
//常用命令go help可以查看
build: 编译
run: 运行go程序
get: 下载并安装依赖包
install: 编译并安装包依赖
clean: 移除对象文件
doc: 显示包或者符号的文档
env: 显示环境变量信息
bug: 启动错误报告
generate: 从processing source生成go文件
list: 列出包
test: 测试运行
version: 显示go的版本
tool: 运行go提供的工具
vet: 运行go tool vet
fix: 运行go tool fix
fmt: 格式化
go是使用包和模块来组织代码,包就是指文件夹,模块就是指.go结尾的文件。
go get xxxx //下载包
参数介绍:
-d 只下载不安装
-f 只有在你包含了 -u 参数的时候才有效,不让 -u 去验证 import 中的每一个都已经获取了,这对于本地 fork 的包特别有用
-fix 在获取源码之后先运行 fix,然后再去做其他的事情
-t 同时也下载需要为运行测试所需要的包
-u 强制使用网络去更新包和它的依赖包
-v 显示执行的命令
//go mod命令
init //初始化,创建go.mod文件 go mod init project //初始化项目
download //下载模块到本地缓存
tidy //增加需要的依赖,删除不需要的依赖
1.新建项目文件夹:project
mkdir project
2.初始化项目:
go mod init project
//会生成 go.mod文件
cat go.mod
module project
go 1.19
3.创建包
mkdir helloWorld && cd helloWorld
vim helloWorld.go
package helloworld
func Hello() string {
return "hello world!"
}
4.创建文件
vim ../main.go
package main
import (
"fmt"
helloworld "project/helloWorld"
)
func main() {
s := helloworld.Hello()
fmt.Printf("s: %v\n", s)
}
5.相互调用
go run main.go
//打印:s: hello world!
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com