1.环境搭建

1.Windows

系统GolangVisual Studio Code
Microsoft Windows (x86-64)go1.20.1.windows-amd64.msihttps://code.visualstudio.com/Download
Microsoft Windows (x86-i386)go1.20.1.windows-386.msihttps://code.visualstudio.com/Download
Microsoft Windows (ARM64)go1.20.1.windows-arm64.msihttps://code.visualstudio.com/Download

1.1.Golang

1.1.1.安装

  • 双击打开下载的安装包, 点击Next
    在这里插入图片描述
  • 接受许可协议, 点击Next
    在这里插入图片描述
  • 选择安装目录, 点击Next
    在这里插入图片描述
  • 进行安装, 点击Install
    在这里插入图片描述
    在这里插入图片描述
  • 安装完成, 点击Finish
    在这里插入图片描述

1.1.2.配置

  • 打开终端,进行配置

键盘按下: Win + R,输入cmd,点击确定,唤起终端

在这里插入图片描述
在这里插入图片描述

  • 创建工作目录

pushd d:进入指定目录D盘
pushd D:\ProgramData\Workspace\Go进入到指定目录

pushd d:
mkdir D:\ProgramData\Workspace\Go
pushd D:\ProgramData\Workspace\Go
mkdir bin pkg src
dir

在这里插入图片描述

  • 配置环境变量
变量名变量值说明
GOROOTD:\Program Files\GoGo安装位置
GOPATHD:\ProgramData\Workspace\GoGo工作目录,含有:1. src:项目源代码;2. pkg:依赖库;3. bin:可执行文件
GOBIND:\ProgramData\Workspace\Go\binGo编译运行可执行文件目录
GO111MODULEongo mod管理:on/auto/off
GOPROXYhttps://goproxy.io代理(特别是GO111MODULE配置为on或者auto后尤其重要)
Path ;%GOROOT%\bin;%GOPATH%\bin;%GOBIN%;%GOPROXY%可执行文件目录,追加到Path环境变量后

进入Windows的文件资源管理器,选择此电脑,鼠标右键单击,选择属性

在这里插入图片描述

进入系统>系统信息页面,点击 高级系统设置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

进入 系统属性> 高级 页面,点击 环境变量

在这里插入图片描述

删除用户变量中有关Go的变量信息,用户变量中的Path变量内容可以双击打开进行编辑,确保用户变量中没有任何关于Go的信息

  • 新建系统变量GOROOT
    在这里插入图片描述

GOROOT必须是安装时候选择的Go的安装目录

在这里插入图片描述
在这里插入图片描述

  • 新建系统变量GOPATH
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 新建系统变量GOBIN
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 新建系统变量GO111MODULE
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 新建系统变量GOPROXY
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 追加新建的系统变量到Path后面
    在这里插入图片描述
    在这里插入图片描述

新建 %GOROOT%\bin

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

新建 %GOPATH%\bin

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

新建 %GOBIN%

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

新建 %GOPROXY%

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

点击确定

在这里插入图片描述

  • 环境变量 配置确定
    在这里插入图片描述

  • 系统属性> 高级配置 确定
    在这里插入图片描述

1.1.3.测试

  • 打开终端,进行配置

键盘按下: Win + R,输入cmd,点击确定,唤起终端

在这里插入图片描述
在这里插入图片描述

  • 查看环境
go env

在这里插入图片描述

  • 查看版本
go version

在这里插入图片描述

1.2.Visual Studio Code

1.2.1.安装

  • 双击打开下载的安装包
    在这里插入图片描述
    在这里插入图片描述

  • 接受许可协议,点击下一步
    在这里插入图片描述

  • 选择安装位置,点击下一步
    在这里插入图片描述

  • 点击下一步
    在这里插入图片描述

  • 选择附加任务,点击下一步
    在这里插入图片描述

  • 点击安装
    在这里插入图片描述
    在这里插入图片描述

  • 点击完成
    在这里插入图片描述
    在这里插入图片描述

1.2.2.插件

  • Chinese
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • SSH

在这里插入图片描述

  • Go
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 终端设置 GO111MODULE和 GOPROXY 环境变量

go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.io

在这里插入图片描述

  • 安装插件工具
Go:Install/Update Tools

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • koroFileHeader
    在这里插入图片描述

1.2.3.配置

  • 打开命令面板
    在这里插入图片描述

  • 打开用户设置JSON

Open User Settings JSON

在这里插入图片描述
在这里插入图片描述

  • 编辑用户配置JSON文件并保存
{
    // 当编辑器失去焦点时,自动保存具有更改的编辑器
    "files.autoSave": "onFocusChange",
    // 头部注释
    "fileheader.customMade": {
        // Author字段是文件的创建者 可以在specialOptions中更改特殊属性
        // 公司项目和个人项目可以配置不同的用户名与邮箱 搜索: gitconfig includeIf  比如: https://ayase.moe/2021/03/09/customized-git-config/
        // 自动提取当前git config中的: 用户名、邮箱
        "Author": "git config user.name && git config user.email", // 同时获取用户名与邮箱
        // "Author": "git config user.name", // 仅获取用户名
        // "Author": "git config user.email", // 仅获取邮箱
        // "Author": "OBKoro1", // 写死的固定值 不从git config中获取
        "Date": "Do not edit", // 文件创建时间(不变)
        // LastEditors、LastEditTime、FilePath将会自动更新 如果觉得时间更新的太频繁可以使用throttleTime(默认为1分钟)配置更改更新时间。
        "LastEditors": "git config user.name && git config user.email", // 文件最后编辑者 与Author字段一致
        // 由于编辑文件就会变更最后编辑时间,多人协作中合并的时候会导致merge
        // 可以将时间颗粒度改为周、或者月,这样冲突就减少很多。搜索变更时间格式: dateFormat
        "LastEditTime": "Do not edit", // 文件最后编辑时间
        // 输出相对路径,类似: /文件夹名称/src/index.js
        "FilePath": "Do not edit", // 文件在项目中的相对路径 自动更新
        // 插件会自动将光标移动到Description选项中 方便输入 Description字段可以在specialOptions更改
        "Description": "", // 介绍文件的作用、文件的入参、出参。
        // custom_string_obkoro1~custom_string_obkoro100都可以输出自定义信息
        // 可以设置多条自定义信息 设置个性签名、留下QQ、微信联系方式、输入空行等
        "custom_string_obkoro1": "",
        // 版权声明 保留文件所有权利 自动替换年份 获取git配置的用户名和邮箱
        // 版权声明获取git配置, 与Author字段一致: ${git_name} ${git_email} ${git_name_email}
        "custom_string_obkoro1_copyright": "Copyright (c) ${now_year} by ${git_name_email}, All Rights Reserved. "
        // "custom_string_obkoro1_copyright": "Copyright (c) ${now_year} by 写死的公司名/用户名, All Rights Reserved. "
    },
    // 函数注释
    "fileheader.cursorMode": {
        "description": "", // 函数注释生成之后,光标移动到这里
        "param": "", // param 开启函数参数自动提取 需要将光标放在函数行或者函数上方的空白行
        "return": "",
    },
    // 插件配置项
    "fileheader.configObj": {
        "autoAdd": true, // 检测文件没有头部注释,自动添加文件头部注释
        "autoAddLine": 100, // 文件超过多少行数 不再自动添加头部注释
        "autoAlready": true, // 只添加插件支持的语言以及用户通过`language`选项自定义的注释
        "supportAutoLanguage": [], // 设置之后,在数组内的文件才支持自动添加
        // 自动添加头部注释黑名单
        "prohibitAutoAdd": [
            "json"
        ],
        "prohibitItemAutoAdd": [
            "项目的全称禁止项目自动添加头部注释, 使用快捷键自行添加"
        ],
        "folderBlacklist": [
            "node_modules"
        ], // 文件夹或文件名禁止自动添加头部注释
        "wideSame": false, // 头部注释等宽设置
        "wideNum": 13, // 头部注释字段长度 默认为13
        "functionWideNum": 0, // 函数注释等宽设置 设为0 即为关闭
        // 头部注释第几行插入
        "headInsertLine": {
            "php": 2 // php文件 插入到第二行
        },
        "beforeAnnotation": {}, // 头部注释之前插入内容
        "afterAnnotation": {}, // 头部注释之后插入内容
        "specialOptions": {}, // 特殊字段自定义 比如: Author、LastEditTime、LastEditors、FilePath、Description、Date等
        "switch": {
            "newlineAddAnnotation": true // 默认遇到换行符(\r\n \n \r)添加注释符号
        },
        "moveCursor": true, // 自动移动光标到Description所在行
        "dateFormat": "YYYY-MM-DD HH:mm:ss",
        "atSymbol": [
            "@",
            "@"
        ], // 更改所有文件的自定义注释中的@符号
        "atSymbolObj": {}, //  更改单独语言/文件的@
        "colon": [
            ": ",
            ": "
        ], // 更改所有文件的注释冒号
        "colonObj": {}, //  更改单独语言/文件的冒号
        "filePathColon": "路径分隔符替换", // 默认值: mac: / window是: \
        "showErrorMessage": false, // 是否显示插件错误通知 用于debugger
        "writeLog": false, // 错误日志生成
        "CheckFileChange": false, // 单个文件保存时进行diff检查
        "createHeader": false, // 新建文件自动添加头部注释
        "useWorker": false, // 是否使用工作区设置
        "designAddHead": false, // 添加注释图案时添加头部注释
        "headDesignName": "random", // 图案注释使用哪个图案 
        "headDesign": false, // 是否使用图案注释替换头部注释
        // 自定义配置是否在函数内生成注释 不同文件类型和语言类型
        "cursorModeInternalAll": {}, // 默认为false 在函数外生成函数注释
        "openFunctionParamsCheck": true, // 开启关闭自动提取添加函数参数
        "functionParamsShape": [
            "{",
            "}"
        ], // 函数参数外形自定义 
        // "functionParamsShape": "no type" 函数参数不需要类型
        "functionBlankSpaceAll": {}, // 函数注释空格缩进 默认为空对象 默认值为0 不缩进
        "functionTypeSymbol": "*", // 参数没有类型时的默认值
        "typeParamOrder": "type param", // 参数类型 和 参数的位置自定义
        "NoMatchParams": "no show param", // 没匹配到函数参数,是否显示@param与@return这两行 默认不显示param
        "functionParamAddStr": "", // 在 type param 后面增加字符串 可能是冒号,方便输入参数描述
        // 自定义语言注释,自定义取消 head、end 部分
        // 不设置自定义配置language无效 默认都有head、end
        "customHasHeadEnd": {}, // "cancel head and function" | "cancel head" | "cancel function" 
        "throttleTime": 60000, // 对同一个文件 需要过1分钟再次修改文件并保存才会更新注释
        // 自定义语言注释符号,覆盖插件的注释格式
        "language": {
            // js后缀文件
            "js": {
                "head": "/$$",
                "middle": " $ @",
                "end": " $/",
                // 函数自定义注释符号:如果有此配置 会默认使用
                "functionSymbol": {
                    "head": "/******* ", // 统一增加几个*号
                    "middle": " * @",
                    "end": " */"
                },
                "functionParams": "typescript" // 函数注释使用ts语言的解析逻辑
            },
            // 一次匹配多种文件后缀文件 不用重复设置
            "h/hpp/cpp": {
                "head": "/*** ", // 统一增加几个*号
                "middle": " * @",
                "end": " */"
            },
            // 针对有特殊要求的文件如:test.blade.php
            "blade.php": {
                "head": "<!--",
                "middle": " * @",
                "end": "-->",
            }
        },
        // 默认注释  没有匹配到注释符号的时候使用。
        "annotationStr": {
            "head": "/*",
            "middle": " * @",
            "end": " */",
            "use": false
        },
    },
    // Golang 配置
    "go.toolsManagement.autoUpdate": true,
    "go.autocompleteUnimportedPackages": true,
    "go.gotoSymbol.includeImports": true,
    "go.gocodePackageLookupMode": "go",
    "go.docsTool": "godoc",
    // Golang test 测试执行一次,避免缓存多次效果相同
    "go.testFlags": [
        "-v",
        "-count=1"
    ]
}

1.2.4.测试

  • 打开终端,新建项目
pushd D:\ProgramData\Workspace\Go\src
mkdir test
pushd D:\ProgramData\Workspace\Go\src\test
go mod init

在这里插入图片描述

  • 打开项目文件夹

环境变量%GOPATH%对应的/src/test文件夹

在这里插入图片描述

  • 创建main.go
package main

import "fmt"

func main() {
	fmt.Println("hello")
}
  • 打开终端,运行测试
go run main.go

在这里插入图片描述

2.macOS

系统GolangVisual Studio Code
Apple macOS (x86-64)go1.20.1.darwin-amd64.pkghttps://code.visualstudio.com/Download
Apple macOS (ARM64)go1.20.1.darwin-arm64.pkghttps://code.visualstudio.com/Download

2.1.Golang

2.1.1.安装

  • 双击打开下载的安装包, 点击继续
    在这里插入图片描述

  • 点击安装
    在这里插入图片描述

  • 授权安装
    在这里插入图片描述
    在这里插入图片描述

  • 安装完成,点击关闭即可
    在这里插入图片描述

2.1.2.配置

打开终端,进行配置

  • 创建工作目录
cd ~
mkdir -p ~/Workspace/Go/{bin,pkg,src}
  • 配置环境变量
cd ~
touch .zshenv
cat >> .zshenv<<EOF
export GOROOT=/usr/local/go
export GOPATH=~/Workspace/Go
export GOBIN=~/Workspace/Go/bin
export GO111MODULE="on"
export GOPROXY=https://goproxy.io
export PATH=$PATH:$GOROOT/bin:$GOPATH:$GOBIN:$GOPROXY
EOF
source .zshenv

2.1.3.测试

  • 查看环境
go env

在这里插入图片描述

  • 查看版本
go version

在这里插入图片描述

2.2.Visual Studio Code

2.2.1.安装

  • 双击解压压缩包
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

将应用程序文件移动(拖拽)到 应用程序目录下

在这里插入图片描述

  • 在启动台可以看到安装的程序
    在这里插入图片描述

  • 打开应用程序, 点击打开
    在这里插入图片描述
    在这里插入图片描述

2.2.2.插件

  • Chinese
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • SSH
    在这里插入图片描述

  • Go
    在这里插入图片描述

  • 终端设置 GO111MODULEGOPROXY 环境变量

go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.io

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 安装插件工具
Go:Install/Update Tools

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • koroFileHeader
    在这里插入图片描述

2.2.3.配置

  • 打开命令面板
    在这里插入图片描述

  • 打开用户设置JSON

Open User Settings JSON

在这里插入图片描述
在这里插入图片描述

  • 编辑用户配置JSON文件并保存
{
    // 当编辑器失去焦点时,自动保存具有更改的编辑器
    "files.autoSave": "onFocusChange",
    // 头部注释
    "fileheader.customMade": {
        // Author字段是文件的创建者 可以在specialOptions中更改特殊属性
        // 公司项目和个人项目可以配置不同的用户名与邮箱 搜索: gitconfig includeIf  比如: https://ayase.moe/2021/03/09/customized-git-config/
        // 自动提取当前git config中的: 用户名、邮箱
        "Author": "git config user.name && git config user.email", // 同时获取用户名与邮箱
        // "Author": "git config user.name", // 仅获取用户名
        // "Author": "git config user.email", // 仅获取邮箱
        // "Author": "OBKoro1", // 写死的固定值 不从git config中获取
        "Date": "Do not edit", // 文件创建时间(不变)
        // LastEditors、LastEditTime、FilePath将会自动更新 如果觉得时间更新的太频繁可以使用throttleTime(默认为1分钟)配置更改更新时间。
        "LastEditors": "git config user.name && git config user.email", // 文件最后编辑者 与Author字段一致
        // 由于编辑文件就会变更最后编辑时间,多人协作中合并的时候会导致merge
        // 可以将时间颗粒度改为周、或者月,这样冲突就减少很多。搜索变更时间格式: dateFormat
        "LastEditTime": "Do not edit", // 文件最后编辑时间
        // 输出相对路径,类似: /文件夹名称/src/index.js
        "FilePath": "Do not edit", // 文件在项目中的相对路径 自动更新
        // 插件会自动将光标移动到Description选项中 方便输入 Description字段可以在specialOptions更改
        "Description": "", // 介绍文件的作用、文件的入参、出参。
        // custom_string_obkoro1~custom_string_obkoro100都可以输出自定义信息
        // 可以设置多条自定义信息 设置个性签名、留下QQ、微信联系方式、输入空行等
        "custom_string_obkoro1": "",
        // 版权声明 保留文件所有权利 自动替换年份 获取git配置的用户名和邮箱
        // 版权声明获取git配置, 与Author字段一致: ${git_name} ${git_email} ${git_name_email}
        "custom_string_obkoro1_copyright": "Copyright (c) ${now_year} by ${git_name_email}, All Rights Reserved. "
        // "custom_string_obkoro1_copyright": "Copyright (c) ${now_year} by 写死的公司名/用户名, All Rights Reserved. "
    },
    // 函数注释
    "fileheader.cursorMode": {
        "description": "", // 函数注释生成之后,光标移动到这里
        "param": "", // param 开启函数参数自动提取 需要将光标放在函数行或者函数上方的空白行
        "return": "",
    },
    // 插件配置项
    "fileheader.configObj": {
        "autoAdd": true, // 检测文件没有头部注释,自动添加文件头部注释
        "autoAddLine": 100, // 文件超过多少行数 不再自动添加头部注释
        "autoAlready": true, // 只添加插件支持的语言以及用户通过`language`选项自定义的注释
        "supportAutoLanguage": [], // 设置之后,在数组内的文件才支持自动添加
        // 自动添加头部注释黑名单
        "prohibitAutoAdd": [
            "json"
        ],
        "prohibitItemAutoAdd": [
            "项目的全称禁止项目自动添加头部注释, 使用快捷键自行添加"
        ],
        "folderBlacklist": [
            "node_modules"
        ], // 文件夹或文件名禁止自动添加头部注释
        "wideSame": false, // 头部注释等宽设置
        "wideNum": 13, // 头部注释字段长度 默认为13
        "functionWideNum": 0, // 函数注释等宽设置 设为0 即为关闭
        // 头部注释第几行插入
        "headInsertLine": {
            "php": 2 // php文件 插入到第二行
        },
        "beforeAnnotation": {}, // 头部注释之前插入内容
        "afterAnnotation": {}, // 头部注释之后插入内容
        "specialOptions": {}, // 特殊字段自定义 比如: Author、LastEditTime、LastEditors、FilePath、Description、Date等
        "switch": {
            "newlineAddAnnotation": true // 默认遇到换行符(\r\n \n \r)添加注释符号
        },
        "moveCursor": true, // 自动移动光标到Description所在行
        "dateFormat": "YYYY-MM-DD HH:mm:ss",
        "atSymbol": [
            "@",
            "@"
        ], // 更改所有文件的自定义注释中的@符号
        "atSymbolObj": {}, //  更改单独语言/文件的@
        "colon": [
            ": ",
            ": "
        ], // 更改所有文件的注释冒号
        "colonObj": {}, //  更改单独语言/文件的冒号
        "filePathColon": "路径分隔符替换", // 默认值: mac: / window是: \
        "showErrorMessage": false, // 是否显示插件错误通知 用于debugger
        "writeLog": false, // 错误日志生成
        "CheckFileChange": false, // 单个文件保存时进行diff检查
        "createHeader": false, // 新建文件自动添加头部注释
        "useWorker": false, // 是否使用工作区设置
        "designAddHead": false, // 添加注释图案时添加头部注释
        "headDesignName": "random", // 图案注释使用哪个图案 
        "headDesign": false, // 是否使用图案注释替换头部注释
        // 自定义配置是否在函数内生成注释 不同文件类型和语言类型
        "cursorModeInternalAll": {}, // 默认为false 在函数外生成函数注释
        "openFunctionParamsCheck": true, // 开启关闭自动提取添加函数参数
        "functionParamsShape": [
            "{",
            "}"
        ], // 函数参数外形自定义 
        // "functionParamsShape": "no type" 函数参数不需要类型
        "functionBlankSpaceAll": {}, // 函数注释空格缩进 默认为空对象 默认值为0 不缩进
        "functionTypeSymbol": "*", // 参数没有类型时的默认值
        "typeParamOrder": "type param", // 参数类型 和 参数的位置自定义
        "NoMatchParams": "no show param", // 没匹配到函数参数,是否显示@param与@return这两行 默认不显示param
        "functionParamAddStr": "", // 在 type param 后面增加字符串 可能是冒号,方便输入参数描述
        // 自定义语言注释,自定义取消 head、end 部分
        // 不设置自定义配置language无效 默认都有head、end
        "customHasHeadEnd": {}, // "cancel head and function" | "cancel head" | "cancel function" 
        "throttleTime": 60000, // 对同一个文件 需要过1分钟再次修改文件并保存才会更新注释
        // 自定义语言注释符号,覆盖插件的注释格式
        "language": {
            // js后缀文件
            "js": {
                "head": "/$$",
                "middle": " $ @",
                "end": " $/",
                // 函数自定义注释符号:如果有此配置 会默认使用
                "functionSymbol": {
                    "head": "/******* ", // 统一增加几个*号
                    "middle": " * @",
                    "end": " */"
                },
                "functionParams": "typescript" // 函数注释使用ts语言的解析逻辑
            },
            // 一次匹配多种文件后缀文件 不用重复设置
            "h/hpp/cpp": {
                "head": "/*** ", // 统一增加几个*号
                "middle": " * @",
                "end": " */"
            },
            // 针对有特殊要求的文件如:test.blade.php
            "blade.php": {
                "head": "<!--",
                "middle": " * @",
                "end": "-->",
            }
        },
        // 默认注释  没有匹配到注释符号的时候使用。
        "annotationStr": {
            "head": "/*",
            "middle": " * @",
            "end": " */",
            "use": false
        },
    },
    // Golang 配置
    "go.toolsManagement.autoUpdate": true,
    "go.autocompleteUnimportedPackages": true,
    "go.gotoSymbol.includeImports": true,
    "go.gocodePackageLookupMode": "go",
    "go.docsTool": "godoc",
    // Golang test 测试执行一次,避免缓存多次效果相同
    "go.testFlags": [
        "-v",
        "-count=1"
    ]
}

2.2.4.测试

  • 打开终端,新建项目
mkdir -p $GOPATH/src/test && cd $_
go mod init

在这里插入图片描述

  • 打开项目文件夹

环境变量$GOPATH对应的/src/test文件夹

在这里插入图片描述

  • 创建main.go
package main

import "fmt"

func main() {
	fmt.Println("hello")
}
  • 打开终端,运行测试
go run main.go

在这里插入图片描述

3.Linux

系统GolangVisual Studio Code
Linux (x86-64)go1.20.1.linux-amd64.tar.gzhttps://code.visualstudio.com/Download
Linux (x86-i386)go1.20.1.linux-386.tar.gzhttps://code.visualstudio.com/Download
Linux (ARM64)go1.20.1.linux-arm64.tar.gzhttps://code.visualstudio.com/Download

3.1.Golang

3.1.1.安装

  • 安装安装必备工具
sudo yum -y install wget tar
  • 下载安装包
wget --no-check-certificate -c -O go1.20.1.linux-amd64.tar.gz https://go.dev/dl/go1.20.1.linux-amd64.tar.gz && ls -la |grep "go1.20.1.linux-amd64.tar.gz"
  • 解压到指定目录
sudo tar -zxf go1.20.1.linux-amd64.tar.gz -C /usr/local/ && ls /usr/local/ | grep go
  • 删除安装包
rm -rf go1.20.1.linux-amd64.tar.gz

3.1.2.配置

● 创建工作目录

mkdir -p ~/Workspace/Go/{bin,pkg,src} && ls -la ~/Workspace/Go/
  • 配置环境变量
sudo tee -a /etc/profile<<-'EOF'
export GOROOT=/usr/local/go
export GOPATH=~/Workspace/Go
export GOBIN=~/Workspace/Go/bin
export GO111MODULE="on"
export GOPROXY=https://goproxy.io
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin:$GOBIN:$GOPROXY
EOF
source /etc/profile

3.1.3.测试

  • 查看环境
go env
  • 查看版本
go version

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【操作系统】内存管理

文章目录 内存的基础知识什么是内存进程的工作原理指令的工作原理逻辑地址&#xff08;相对地址&#xff09;vs物理地址&#xff08;绝对地址&#xff09;从写程序到程序运行—编译、链接、装入装入的三种方式链接的三种方式 什么是内存管理&#xff1f;内存空间的分配与回收内…

基于51单片机的简易电子秤

首先看看题目要求&#xff1a; 1.方案论证 &#xff08;1&#xff09;压力传感器的论证与选择 方案一&#xff1a;采用惠更斯电桥&#xff0c;当电阻应变片承受载荷产生变形时&#xff0c;其阻值将发生变化。从而使电桥失去平衡&#xff0c;产生相应的差动信号&#xff0c;但…

Java中线程的状态

Java中线程的状态分为6种。 初始(NEW)&#xff1a;新创建了一个线程对象&#xff0c;但还没有调用start()方法。运行(RUNNABLE)&#xff1a;Java线程中将就绪&#xff08;ready&#xff09;和运行中&#xff08;running&#xff09;两种状态笼统的称为“运行”。 线程对象创建…

gateway的使用

什么是Spring Cloud Gateway 网关作为流量的入口&#xff0c;常用的功能包括路由转发&#xff0c;权限校验&#xff0c;限流等。 Spring Cloud Gateway 是Spring Cloud官方推出的第二代网关框架&#xff0c;定位于取代 Netflix Zuul。相比 Zuul 来说&#xff0c;Spring Cloud …

ADV7391BCPZ-ASEMI代理亚德诺ADV7391BCPZ原厂芯片

编辑-Z ADV7391BCPZ参数描述&#xff1a; 型号&#xff1a;ADV7391BCPZ VDD&#xff1a;1.8V VAA&#xff1a;3.3V 全驱动输出电流&#xff1a;34.6 mA 低驱动输出电流&#xff1a;4.3 mA 输出电容&#xff1a;10 pF 模拟输出延迟&#xff1a;6 ns DAC模拟输出倾斜&am…

文件一直处于修改状态 git checkout 无法还原的问题解决方法

问题描述 最近在 RT-Thread 时&#xff0c;使用 Git 回退版本验证问题&#xff0c;后来 git pull 拉取最新代码后&#xff0c;发现里面有几个文件&#xff0c;一直为【修改】状态&#xff0c;并且无法还原&#xff0c;git checkout xxx git reset --hard 都用了&#xff0c;依旧…

简单两步创建nVisual建筑场景

nVisual是一款网络基础设施可视化管理软件&#xff0c;通过模型可规划即将建设的机房效果&#xff0c;或者将已有的机房场景复刻至系统中&#xff0c;便于运维管理者清晰的了解机房设备及线缆路由连接关系。 数据初始我们需要将数据中心场景复刻至系统中&#xff0c;建筑场景也…

【Java】抽象类与接口

文章目录 1.抽象类1.1抽象方法 2.接口3.抽象类和接口的区别3.1代码中区分&#xff1a;3.2设计层面区分 在面向对象编程中&#xff0c;抽象是非常重要的一个特征。在Java中可以通过抽象类或接口的形式实现这一特性。 1.抽象类 Java关键字 abstract对应抽象类的使用 1.1抽象方法…

Calico的BGP打通Kubernetes网络和局域网

1、项目背景 随着云原生技术的不断发展&#xff0c;容器化应用已成为企业构建云原生架构的重要方式。而随着集群规模不断扩大&#xff0c;跨主机通信的需求也越来越重要。在 Kubernetes 集群中&#xff0c;Pod 是最小的调度和管理单位&#xff0c;而网络也是 Kubernetes 中最重…

二叉树OJ

文章目录 二叉树OJ根据二叉树创建字符串思路示例代码 二叉树的层序遍历思路示例代码 二叉树的层序遍历 II思路示例代码 二叉树的最近公共祖先思路1示例代码1思路2示例代码2 二叉搜索树与双向链表思路1示例代码1思路2示例代码2 迭代实现二叉树的三种遍历前序遍历思路示例代码 中…

哪些蓝牙耳机戴久不疼?长时间佩戴不疼的蓝牙耳机推荐

现在的真无线耳机已经成为了人们的标配之一了&#xff0c;各个厂家也紧随其后&#xff0c;生产出了多种无线耳机&#xff0c;不少人的选购蓝牙耳机一般都是对音质、佩戴和连接&#xff0c;但通常人们佩戴蓝牙耳机都是在半天左右&#xff0c;小编专门整理了一期舒适度高的耳机&a…

ElasticSeach 集成 springboot

声明是ElasticSearch? ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎&#xff0c; 基于RESTful web接口。Elasticsearch是用Java开发的&#xff0c;并作为Apache许可条款下的开放源码发布&#xff0c;是 当前流行的企业级搜索引擎…

Unity 坐标系

一、左手坐标系与右手坐标系 常见的三维软件都采用笛卡尔坐标系&#xff0c;也就是常见的xyz轴坐标系。笛卡尔坐标系可以是左手坐标系也可以是右手坐标系&#xff0c;如下图所示 两种坐标系是镜像对称的。而Unity采用左手系&#xff0c;且xyz轴的默认方向与图中的左手系完全一…

便携式车用CAN分析仪

产品简介 USBCAN-C系列便携式车用CAN分析仪&#xff0c;通过USB接口快速扩展一路CAN通道&#xff0c;使接入CAN网络非常容易&#xff0c;它具有一体式和小巧紧凑的外形&#xff0c;特别适合于随身携带。CAN接口采用金升阳电源模块和信号隔离芯片实现2500V DC电气隔离&#xff0…

KVM存储池管理与磁盘格式

KVM存储池管理与磁盘格式 KVM必须配置一个目录作为存储磁盘镜像&#xff08;存储卷&#xff09;的目录&#xff0c;我们称这个目录为存储池 存储池管理 默认存储池 /var/lib/libvirt/images/ 创建基于文件夹的存储池&#xff08;目录&#xff09; mkdir -p /data/vmfs定义…

WhatsApp如何让客户参与变得更简单?

WhatsApp对你的品牌来说可能和Twitter和Facebook一样重要&#xff0c;你可能已经把它们纳入你的社交媒体战略。 是的&#xff0c;WhatsApp不仅仅可以用来给同事发短信或与远方的亲戚视频聊天&#xff0c;它也适用于商业。 在发展WhatsApp业务时&#xff0c;小企业主得到了最优…

【网络】Socket编程-UDP篇

文章目录 预备知识源IP地址和目的IP地址源MAC地址和目的MAC地址源端口号和目的端口号"端口号port" 和 "进程ID"认识TCP/UDP协议网络字节序 Socket编程sockaddr结构API接口 简单的UDP网络程序服务器server服务端创建套接字:socket函数**socket的底层原理** …

Unity学习笔记 关于Unity相机的FOV以及水平FOV和垂直FOV之间的转换

前言 关于FOV FOV 是在任何给定时间通过人眼、相机取景器或在显示屏上可见的可观察世界的范围。它指的是整个区域的覆盖范围&#xff0c;而不是单个固定焦点。FOV 还描述了一个人可以看到可见世界的角度。 FOV 越宽&#xff0c;可以看到的可观察世界就越多。它是水平、垂直和对…

使用 OpenCV 进行基于 ESP32 CAM 的目标检测和识别

概述:基于 ESP32 CAM 的目标检测和识别 本教程介绍了使用OpenCV基于 ESP32 CAM的目标检测和识别主题。OpenCV 是一个开源的图像处理库,不仅在工业界而且在研发领域都得到了非常广泛的应用。 这里对于对象检测,我们使用了cvlib 库。该库使用 COCO 数据集上的预训练 AI 模型…

JSON-框架的具体使用

JSON-框架的具体使用 非 SpringBoot 项目 Jackson Jackson 是另一个流行的JSON序列化和反序列化库&#xff0c;具有以下特点 速度快&#xff1a;Jackson 采用了高效的JSON解析算法和字节码生成技术&#xff0c;使得其序列化和反序列化速度非常快。支持全类型序列化&#xff1…