Go学习笔记_环境搭建
Go学习笔记_环境搭建
Go背景知识
go的特点(官网):
Build fast, reliable, and efficient software at scale- Go is an open source programming language supported by Google
- Easy to learn and get started with
- Built-in concurrency and a robust standard library
- Growing ecosystem of partners, communities, and tools
go的特性:
- 简单:只有25个关键字,C37个,C++84个
- 对于复杂任务,比如并发编程,内存管理,都有内置的并发支持及垃圾回收机制
- 高效:编译的静态类型语言,可以使用指针直接访问内存
- 生产力:简洁清晰的依赖管理以及独特的接口类型设计以及对编程方式的约束:支持复合不支持继承的扩展方式,转语言非常方便
go的应用:
- 云原生
- 区块链
Go安装
1.官网下载
https://golang.google.cn/dl/
配置环境变量
go version
安装完成后,命令行输入go version可以查看是否安装成功
xxxx> go version
go version go1.17.7 windows/amd64
go env
go env可以查看当前生效的go环境参数配置
xxxx> go env
set GO111MODULE=on
set GOARCH=amd64
set GOBIN=
set GOCACHE=xxx\AppData\Local\go-build
set GOENV=xxx\AppData\Roaming\go\env
set GOEXE=.exe
set GOEXPERIMENT=
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=xxx\go\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=xxx\go
set GOPRIVATE=
set GOPROXY=https://goproxy.cn,direct
set GOROOT=C:\Program Files\Go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLDIR=C:\Program Files\Go\pkg\tool\windows_amd64
set GOVCS=
set GOVERSION=go1.17.7
set GCCGO=gccgo
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=NUL
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=C:\Users\ 末小七\AppData\Local\Temp\go-build2034886303=/tmp/go-build -gno-record-gcc-switches
GOROOT
Go 语言安装根目录的路径,也就是 GO 语言的安装路径。
GOPATH
若干工作区目录的路径。是我们自己定义的工作空间。
1.8版本以前必须配置这个环境变量,1.8之后如果没有使用默认值
windows默认值是%USERPROFILE%/goUnix:$HOME/goMac:可以通过修改~/.bash_profile设置
GOBIN
GO 程序生成的可执行文件(executable file)的路径。
GO111MODULE设置为on
第一个go程序
hello world
目录结构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OmqoZpPf-1646819609778)(image-20220309144929258.png)]
helloworld demo
package mainimport "fmt"func main() {fmt.Println("hello world~")
}
tips
在java中,package名字跟目录名字是要保持一致的,但是go是没有这个约束的。
退出返回值
与其他语言的差异
- go中main函数不支持任何返回值
- 通过os.Exit来返回状态
错误の示例
正确の示例
func main() {fmt.Println("hello world~")os.Exit(-1)
}
##########################################
hello world~Process finished with the exit code -1
获取命令行参数
错误の示例
正确の示例
func main() {if len(os.Args)>1 {fmt.Println("args:",os.Args[1])}fmt.Println("hello world~")os.Exit(0)
}
##########################################
D:\gocode\godemo\basic\firstfunc> go run hello.go test
args: test
hello world~
与其他语言的差异
- main函数不支持传入参数
- 使用os.Args来获取命令行参数
应用程序入口要求
- 必须是main包
- 必须是main方法
- 文件名不一定是mai.go
指令
go run
运行
go build
编译go文件为二进制文件,go默认使用静态链接,编译完后只是个独立的二进制文件,可以copy到不同的机器上运行。在安装部署的时候,非常便携。
单元测试
- 源码文件以_test结尾
- 测试方法以Test开头(大写开头表示包外可以访问)
示例
package testimport "testing"func TestHello(t *testing.T){t.Log("hello world test~")
}
##########################################
=== RUN TestHellohello_test.go:6: hello world test~
--- PASS: TestHello (0.00s)
PASS
变量赋值
与其他语言的差异
- 赋值可以进行自动类型推断
- 在一个赋值语句中可以对多个变量进行同时赋值
- go中可以使用 iota关键字快速设置连续值
示例
const (Monday = iota + 1TuesdayWednesdayThursdayFridaySaturdaySunday
)func TestIota(t *testing.T) {fmt.Println("Monday:", Monday)fmt.Println("Tuesday:", Tuesday)fmt.Println("Wednesday:", Wednesday)fmt.Println("Thursday:", Thursday)fmt.Println("Friday:", Friday)fmt.Println("Saturday:", Saturday)fmt.Println("Sunday:", Sunday)
}
##########################################
=== RUN TestIota
Monday: 1
Tuesday: 2
Wednesday: 3
Thursday: 4
Friday: 5
Saturday: 6
Sunday: 7
--- PASS: TestIota (0.00s)
PASS
Go学习笔记_环境搭建相关推荐
- 深度学习(二)theano学习笔记(1)环境搭建
theano学习笔记(1)环境搭建 原文地址:http://blog.csdn.net/hjimce/article/details/46654229 作者:hjimce 搭建theano实属不易,因 ...
- Django学习笔记 开发环境搭建
为什么使用django? 1.支持快速开发:用python开发:数据库ORM系统,并不需要我们手动地构造SQL语句,而是用python的对象访问数据库,能够提升开发效率. 2.大量内置应用:后台管理系 ...
- cocos2d-x lua 学习笔记(1) -- 环境搭建
Cocos2d-x 3.0以上版本的环境搭建和之前的Cocos2d-x 2.0 版差异较大的,同时从Cocos2d-x 3.0项目打包成apk安卓应用文件,搭建安卓环境的步骤有点繁琐,但搭建一次之后, ...
- HarmonyOS_BearPi-HM Nano学习笔记之环境搭建
前言:期待了已久的小熊派鸿蒙开发板终于出世了,12月11号准时抢到优惠券,果断下单,运费一起也就是29.9,实话说,很划算的,毕竟对自己的学习投资嘛,得舍得. 下面我把代码仓库.资料.视频课程地址贴出 ...
- 移植u-boot1.1.6到友善mini2440学习笔记之环境搭建(系列之一)
前记:两年前就想学习ARM,由于一些原因耽搁了下来.如今迫于找硬件岗位工作的压力,不得不硬着头皮学习ARM,以前就知道ARM入门是计较困难的,如今真是体会深切啊,全是心酸泪,不仅自己的无知跟自己作对, ...
- Linux学习笔记1—环境搭建
文章目录 一.Linux是什么? 二.购买云服务器搭建Linux环境 1 Xshell 1.1 Linux下简单的用户管理 1.2 Xshell的复制粘贴 2 vscode+RemoteSSH插件 3 ...
- wepy学习笔记之环境搭建
写了近两年小程序了,越来越发现原生小程序有太多鸡肋的地方.所以今天准备尝试一下wepy,正好最近手上有个外包,可以拿来练手.如果可以的话,或许会出一系列wepy相关的文章(偏实战),欢迎大佬们指正. ...
- Python学习笔记1环境搭建+Numpy
Python環境安裝 系統環境path裡面配置安裝路徑打開cmd輸入py查看是否安裝路徑:D:/sofeware/python3.8 配置系統環境變量(可以安裝時選擇本身就配置) [外链图片转存失败, ...
- node学习笔记_01 环境搭建
一.下载安装nvm (node版本管理器),方便以后版本切换 nvm list -> 查看node版本(版本最好在8.0以上,不然在vsCode断点调试进不去,跟node版 ...
最新文章
- 使用Python,OpenCV,面部标志进行面部对齐
- NBT封面:纳米孔基因组测序快速临床诊断细菌性下呼吸道感染
- 拒绝枯燥,趣味学python!python基础练习:趣味百题!
- monkey测试_用 Instrumentation 改良 Monkey 工具实战
- Python之列表方法
- php final这个关键词代表什么,php面向对象之final关键字用法及实例
- delphi html table,delphi 使用webbrowser取得网页中表格(Table)内容的正确方法
- python判断语句入门教程_Python中的条件判断语句基础学习教程
- php中的boolean(布尔)类型
- MySQL生产常用SQL语句汇总
- 算数运算符与关系运算符_Swift进阶三——运算符相关
- RabbitMQ的Routing 路由模式(Direct)
- 条件概率公式、全概率公式以及贝叶斯公式
- thinkadmin默认ckeditor富文本配置修改
- 对首次认定为虹口区四新示范企业给予20万元奖励
- 线上tomcat服务器假死排查
- 企业上云之服务器硬件篇(五)
- 100个名著浓缩一句话
- 用ftp在个人电脑和服务器之间进行文件传输
- go每日新闻(2021-03-22)——Go 泛型尝鲜