首页 > 其他分享 >复习 Golang Chapter 1 开发环境与配置

复习 Golang Chapter 1 开发环境与配置

时间:2023-11-04 21:34:21浏览次数:28  
标签:Chapter GOPATH 复习 go1.21 get Golang go install Go

  • 学习安装以及配置常见的 Go 环境变量用于开发环境
  • 学习 Go 的一些基本命令以及工具(Makefile)

如何安装与组织你的目录

go 编译器的安装方法直接上官方网站按自己的操作系统来

you are free to organize your projects as you see fit.

环境变量

你安装的 third-party 工具所在的地方

$HOME/go
$HOME/go/src 源码目录
$HOME/go/bin build 后的二进制可执行文件目录

注意,你可以自由的设置 $GOPATH 环境变量来影响上面的 $HOME
建议明确指定你的 GOPATH 环境变量,并且把 $GOPATH/bin目录置于操作系统的可执行路径 path 下

Linux like

export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin

Windows

setx GOPATH %USERPROFILE%\go
setx path "%path%;%USERPROFILE%\bin"

注意:现在已经不使用 GOROOT 环境变量指定 Go 开发环境位置了

编译命令

go run <file_name> 编译后执行并删除掉临时二进制文件
go build <file_name> 编译文件,可以使用 -o <file_name> 参数指定输出文件名

获取第三方的Go工具

不像 Java 的 Maven,js 的 NPM,Go 没有一个中心化的主机服务用于提供这些包
我们使用第三方源代码仓库 go install <repo_address@repo_version>,下载编译,并且安装到 $GOPATH/bin 目录下,如果你之前将这个目录添加进可执行目录,这时你就可以使用该程序了。
但是要注意,不是所有的仓库都支持你当前使用的 Go 版本编译,如果你下载的应用提供了对应系统的 release,直接下载是最好的。
另外,使用此命令需要你安装 Git
如果需要更新到新版本,@符号后指定一个新版本号或者 @latest
$HOME/bin 目录下的是二进制文件,你可以放到你计算机下的任何其他目录

强制的代码格式

go fmt

分号插入规则
Go 需要分号,但是 Go 开发者从来不手动放置分号,这个工作由编译器来处理,会有一个自动分号插入规则,规则作用于语句末尾的最后一个 token,会触发补全分号的 token 类型如下

  1. 一个标识符( int, float64)
  2. 基本字面量,数字或者字符串常量
  3. break, continue, return, ++, --, ), }, fallthrough

Always run go fmt or goimports before compiling your code!

仅仅有 go fmt 还远远不够,所有的 Go 开发者应该阅读

golint

$ go install golang.org/x/lint/golint@latest

术语 lint 来源于贝尔实验室,第一个 linter 写于 1978 年

``
golangci-lint
https://golangci-lint.run/usage/install/

Makefile

Go 使用makefile作为构建工具

Windows

如果使用的是 windows,先安装一下 Chocolatey
以管理员权限启动命令行,然后运行下列命令

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
PS D:\ch1> choco -v
2.2.2
PS D:\ch1> choco install make

Go 多版本使用方法

书上的 go get golang.org/dl/go.x.y.z 已经过期了

$ go get golang.org/dl/go.1.15.6
$ go1.15.6 download
go: go.mod file not found in current directory or any parent directory.
        'go get' is no longer supported outside a module.
        To build and install a command, use 'go install' with a version,
        like 'go install example.com/cmd@latest'
        For more information, see https://golang.org/doc/go-get-install-deprecation
        or run 'go help get' or 'go help install'.

starting in Go 1.17, installing executables with go get is deprecated. go install may be used instead.

https://go.dev/doc/manage-install#installing-multiple
现在(2023年11月4日)的方法

PS D:\ch1> go install golang.org/dl/go1.21.3@latest
PS D:\ch1> go1.21.3 download
Downloaded   0.0% (   16384 / 73755567 bytes) ...
Downloaded   6.7% ( 4931584 / 73755567 bytes) ...
Downloaded  41.9% (30883648 / 73755567 bytes) ...
Downloaded  72.9% (53739120 / 73755567 bytes) ...
Downloaded 100.0% (73755567 / 73755567 bytes)
Unpacking C:\Users\windows_user\sdk\go1.21.3\go1.21.3.windows-amd64.zip ...
Success. You may now run 'go1.21.3'
PS D:\ch1> go1.21.3 version
go version go1.21.3 windows/amd64

标签:Chapter,GOPATH,复习,go1.21,get,Golang,go,install,Go
From: https://www.cnblogs.com/ninkaki/p/17809818.html

相关文章

  • JavaScript复习——03 函数
    函数在JS中也是一个对象,它具有其它对象的所有功能,函数中可以存储代码,且可以在需要的时候调用这些代码函数的操作函数的定义函数声明function函数名([参数列表]){ //函数体 return返回值;}函数表达式const函数名=function([参数列表]){ return返回值;}......
  • chapter7-chapter9
    目录chapter7:更灵活的定位内存地址的方法1.and和or指令2.大小写字母的转换问题3.[bx+idata]4.SI和DI[bx+si]和[bx+di]几种定位内存地址的方法chapter8:数据处理的两个基本问题1.两个基本问题2.bx,si,di,bp3.汇编语言中数据位置的表达4.寻址方式5.div指令(除法指令)6.伪指令dd7.dup操......
  • Golang使用mqtt
    示例使用使用EMQX提供的免费公共MQTT服务器,该服务基于EMQX的MQTT物联网云平台创建。服务器接入信息如下:Broker:broker.emqx.ioTCPPort:1883WebsocketPort:8083golang代码如下packagemainimport( "fmt" mqtt"github.com/eclipse/paho.mqtt.golang" "time......
  • chapter1-chapter6
    目录chapter1:基础知识机器语言汇编语言chapter2:寄存器1.通用寄存器2.字在寄存器中的存储3.一条汇编指令示例4.段的概念5.段寄存器1.CS和IP2.修改CS、IP的指令6.代码段chapter3:寄存器(内存访问)1.内存中字的存储2.DS和[address]3.mov指令,sub指令,add指令4.栈1.8086CPU提供的栈机制2.pu......
  • Go语言Golang DevOps运维开发实战集训营,高级运维必修
    Go语言GolangDevOps运维开发实战集训营,高级运维必修Go语言简介Go语言,也称为Golang,是一门由Google开发的开源编程语言。它的设计目标是提供一种高效、简洁、安全且支持并发的编程语言,适用于构建可靠且高性能的软件系统。Go语言在短短的时间内迅速走红,成为开发者们喜爱的选择,因......
  • Golang中Defer知识点
    1:defer的执行顺序多个defer出现的时候,它是一个“栈”的关系,也就是先进后出。一个函数中,写在前面的defer会比写在后面的defer调用的晚packagemainimport"fmt"funcmain(){deferfunc1()deferfunc2()deferfunc3()}funcfunc1(){fmt.Println("A")......
  • (四)C#编程基础复习——运算符
    运算符其实就是一个符号,用来告诉编译器执行特定的数学或者逻辑运算。C#中内置了丰富的运算符,大致可以分为以下几类:一、算术运算符算术运算符即完成特定算术运算的符号,例如加、减、乘、除、余等,如下图所示:inta=10;intb=20;Console.WriteLine("a+b={0}",a+b);Console.W......
  • 分享一个项目:`learning_go_plan9_assembly`, 学习 golang plan9 汇编
    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!cnblogs博客zhihuGithub公众号:一本正经的瞎扯近期在学习golangplan9汇编,总算基本做到了手写汇编,并整理了很多笔记。plan9汇编的资料少,难学,难用。可能也有想学习汇编的人会遇到与我一样的问题。于是把笔记进......
  • 每天5分钟复习OpenStack(八)存储虚拟化
    KVM存储虚拟化是通过存储池(StoragePool)和卷(Volume)来管理的。StoragePool是宿主机上可以看到的一片存储空间,可以是多种类型,Volume是在StoragePool中划分出的一块空间,宿主机将Volume分配给虚拟机,Volume在虚拟机中看到的就是一块硬盘。1、文件类存储池此环境中使......
  • (三)C#编程基础复习——数据类型
    C#语言中内置了一些基本的数据类型,数据类型用来指定程序中变量可以存储的数据的类型,C#中的数据类型可以大致分为三类:值类型(Valuetypes);引类型(Referencestypes);指针类型(Pointertypes);一、值类型值类型顾名思义就是有带数值的类型,C#中的值类型有非常多,值类型变量声明后,不......