Go基础系列:Go安装与环境配置

2023-05-16

1 平台与架构

Go 语言开发团队开发了适用于以下操作系统的编译器:

  • Linux
  • FreeBSD
  • Mac OS X(也称为 Darwin)

目前有2个版本的编译器:Go 原生编译器 gc 和非原生编译器 gccgo,这两款编译器都是在类 Unix 系统下工作 。其中,gc 版本的编译器已经被移植到 Windows 平台上,并集成在主要发行版中,你也可以通过安装 MinGW 从而在 Windows 平台下使用 gcc 编译器。这两个编译器都是以单通道的形式工作。

你可以获取以下平台上的 Go 1.4 源码和二进制文件:

  • Linux 2.6+:amd64、386 和 arm 架构
  • Mac OS X(Snow Leopard + Lion):amd64 和 386 架构
  • Windows 2000+:amd64 和 386 架构

对于非常底层的纯 Go 语言代码或者包而言,在各个操作系统平台上的可移植性是非常强的,只需要将源码拷贝到相应平台上进行编译即可,或者可以使用交叉编译来构建目标平台的应用程序(第 2.2 节)。但如果你打算使用 cgo 或者类似文件监控系统的软件,就需要根据实际情况进行相应地修改了。

  1. Go 原生编译器 gc:

    主要基于 Ken Thompson 先前在 Plan 9 操作系统上使用的 C 工具链。

    Go 语言的编译器和链接器都是使用 C 语言编写并产生本地代码,Go 不存在自我引导之类的功能。因此如果使用一个有不同指令集的编译器来构建 Go 程序,就需要针对操作系统和处理器架构(32 位操作系统或 64 位操作系统)进行区别对待。

    这款编译器使用非分代、无压缩和并行的方式进行编译,它的编译速度要比 gccgo 更快,产生更好的本地代码,但编译后的程序不能够使用 gcc 进行链接。

    编译器目前支持以下基于 Intel 或 AMD 处理器架构的程序构建。

    图2.1 gc 编译器支持的处理器架构

    当你第一次看到这套命名系统的时候你会觉得很奇葩,不过这些命名都是来自于 Plan 9 项目。

    g = 编译器:将源代码编译为项目代码(程序文本)
    l = 链接器:将项目代码链接到可执行的二进制文件(机器代码)

    (相关的 C 编译器名称为 6c、8c 和 5c,相关的汇编器名称为 6a、8a 和 5a)

    标记(Flags) 是指可以通过命令行设置可选参数来影响编译器或链接器的构建过程或得到一个特殊的目标结果。

    可用的编译器标记如下:

    flags:
    -I 针对包的目录搜索
    -d 打印声明信息
    -e 不限制错误打印的个数
    -f 打印栈结构
    -h 发生错误时进入恐慌(panic)状态
    -o 指定输出文件名 // 详见第3.4节
    -S 打印产生的汇编代码
    -V 打印编译器版本 // 详见第2.3节
    -u 禁止使用 unsafe 包中的代码
    -w 打印归类后的语法解析树
    -x 打印 lex tokens

    从 Go 1.0.3 版本开始,不再使用 8g,8l 之类的指令进行程序的构建,取而代之的是统一的 go buildgo install 等命令,而这些指令会自动调用相关的编译器或链接器。

    如果你想获得更深层次的信息,你可以在目录 $GOROOT/src/cmd 下找到编译器和链接器的源代码。Go 语言本身是由 C 语言开发的,而不是 Go 语言(Go 1.5 开始自举)。词法分析程序是 GNU bison,语法分析程序是名为 $GOROOT/src/cmd/gc/go.y 的 yacc 文件,它会在同一目录输出 y.tab.{c,h} 文件。如果你想知道更多有关构建过程的信息,你可以在 $GOROOT/src/make.bash 中找到。

    大部分的目录都包含了名为 doc.go 的文件,这个文件提供了更多详细的信息。

  2. gccgo 编译器:

    一款相对于 gc 而言更加传统的编译器,使用 GCC 作为后端。GCC 是一款非常流行的 GNU 编译器,它能够构建基于众多处理器架构的应用程序。编译速度相对 gc 较慢,但产生的本地代码运行要稍微快一点。它同时也提供一些与 C 语言之间的互操作性。

    从 Go 1 版本开始,gc 和 gccgo 在编译方面都有等价的功能。

  3. 文件扩展名与包(package):

    Go 语言源文件的扩展名很显然就是 .go

    C 文件使用后缀名 .c,汇编文件使用后缀名 .s。所有的源代码文件都是通过包(packages)来组织。包含可执行代码的包文件在被压缩后使用扩展名 .a(AR 文档)。

    Go 语言的标准库(第 9.1 节)包文件在被安装后就是使用这种格式的文件。

    注意 当你在创建目录时,文件夹名称永远不应该包含空格,而应该使用下划线 “_” 或者其它一般符号代替。

2 Go 环境变量

Go 开发环境依赖于一些操作系统环境变量,你最好在安装 Go 之间就已经设置好他们。如果你使用的是 Windows 的话,你完全不用进行手动设置,Go 将被默认安装在目录 c:/go 下。这里列举几个最为重要的环境变量:

  • ** G O R O O T ∗ ∗ 表 示 G o 在 你 的 电 脑 上 的 安 装 位 置 , 它 的 值 一 般 都 是 ‘ GOROOT** 表示 Go 在你的电脑上的安装位置,它的值一般都是 ` GOROOTGoHOME/go`,当然,你也可以安装在别的地方。
  • $GOARCH 表示目标机器的处理器架构,它的值可以是 386、amd64 或 arm。
  • $GOOS 表示目标机器的操作系统,它的值可以是 darwin、freebsd、linux 或 windows。
  • ** G O B I N ∗ ∗ 表 示 编 译 器 和 链 接 器 的 安 装 位 置 , 默 认 是 ‘ GOBIN** 表示编译器和链接器的安装位置,默认是 ` GOBINGOROOT/bin`,如果你使用的是 Go 1.0.3 及以后的版本,一般情况下你可以将它的值设置为空,Go 将会使用前面提到的默认值。

目标机器是指你打算运行你的 Go 应用程序的机器。

Go 编译器支持交叉编译,也就是说你可以在一台机器上构建运行在具有不同操作系统和处理器架构上运行的应用程序,也就是说编写源代码的机器可以和目标机器有完全不同的特性(操作系统与处理器架构)。

为了区分本地机器和目标机器,你可以使用 $GOHOSTOS$GOHOSTARCH 设置目标机器的参数,这两个变量只有在进行交叉编译的时候才会用到,如果你不进行显示设置,他们的值会和本地机器($GOOS$GOARCH)一样。

  • ** G O P A T H ∗ ∗ 默 认 采 用 和 ‘ GOPATH** 默认采用和 ` GOPATHGOROOT一样的值,但从 Go 1.1 版本开始,你必须修改为其它路径。它可以包含多个包含 Go 语言源码文件、包文件和可执行文件的路径,而这些路径下又必须分别包含三个规定的目录:srcpkgbin`,这三个目录分别用于存放源码文件、包文件和可执行文件。
  • $GOARM 专门针对基于 arm 架构的处理器,它的值可以是 5 或 6,默认为 6。
  • $GOMAXPROCS 用于设置应用程序可使用的处理器个数与核数,详见第 14.1.3 节。

在接下来的章节中,我们将会讨论如何在 Linux、Mac OS X 和 Windows 上安装 Go 语言。在 FreeBSD 上的安装和 Linux 非常类似。开发团队正在尝试将 Go 语言移植到其它例如 OpenBSD、DragonFlyBSD、NetBSD、Plan 9、Haiku 和 Solaris 操作系统上,你可以在这个页面找到最近的动态:Go Porting Efforts。

3 在 Linux 上安装 Go

如果你能够自己下载并编译 Go 的源代码来说是非常有教育意义的,你可以根据这个页面找到安装指南和下载地址:Download the Go distribution。

我们接下来也会带你一步步的完成安装过程。

  1. 设置 Go 环境变量

    我们在 Linux 系统下一般通过文件 $HOME/.bashrc 配置自定义环境变量,根据不同的发行版也可能是文件 $HOME/.profile,然后使用 gedit 或 vi 来编辑文件内容。

    export GOROOT=$HOME/go

    为了确保相关文件在文件系统的任何地方都能被调用,你还需要添加以下内容:

    export PATH= P A T H : PATH: PATH:GOROOT/bin

    在开发 Go 项目时,你还需要一个环境变量来保存你的工作目录。

    export GOPATH=$HOME/Applications/Go

    $GOPATH 可以包含多个工作目录,取决于你的个人情况。如果你设置了多个工作目录,那么当你在之后使用 go get(远程包安装命令)时远程包将会被安装在第一个目录下。

    在完成这些设置后,你需要在终端输入指令 source .bashrc 以使这些环境变量生效。然后重启终端,输入 go envenv 来检查环境变量是否设置正确。

  2. 安装 C 工具

    Go 的工具链是用 C 语言编写的,因此在安装 Go 之前你需要先安装相关的 C 工具。如果你使用的是 Ubuntu 的话,你可以在终端输入以下指令( 译者注:由于网络环境的特殊性,你可能需要将每个工具分开安装 )。

    sudo apt-get install bison ed gawk gcc libc6-dev make

    你可以在其它发行版上使用 RPM 之类的工具。

  3. 获取 Go 源代码

    从 官方页面 或 国内镜像 下载 Go 的源码包到你的计算机上,然后将解压后的目录 go 通过命令移动到 $GOROOT 所指向的位置。

    wget https://storage.googleapis.com/golang/go.src.tar.gz
    tar -zxvf go.src.tar.gz
    sudo mv go $GOROOT

  4. 构建 Go

    在终端使用以下指令来进行编译工作。

    cd $GOROOT/src
    ./all.bash

    在完成编译之后(通常在 1 分钟以内,如果你在 B 型树莓派上编译,一般需要 1 个小时),你会在终端看到如下信息被打印:

    图 2.3 完成编译后在终端打印的信息

    注意事项

    在测试 net/http 包时有一个测试会尝试连接 google.com,你可能会看到如下所示的一个无厘头的错误报告:

    ‘make[2]: Leaving directory `/localusr/go/src/pkg/net’

    如果你正在使用一个带有防火墙的机器,我建议你可以在编译过程中暂时关闭防火墙,以避免不必要的错误。

    解决这个问题的另一个办法是通过设置环境变量 $DISABLE_NET_TESTS 来告诉构建工具忽略 net/http 包的相关测试:

    export DISABLE_NET_TESTS=1

    如果你完全不想运行包的测试,你可以直接运行 ./make.bash 来进行单纯的构建过程。

  5. 测试安装

    使用你最喜爱的编辑器来输入以下内容,并保存为文件名 test.go

    示例 2.1 hello_world1.go

    package main
    
    func main() {
    	println("Hello", "world")
    }
    

    切换相关目录到下,然后执行指令 go run hello_world1.go,将会打印信息:Hello, world

  6. 验证安装版本

    你可以通过在终端输入指令 go version 来打印 Go 的版本信息。

    如果你想要通过 Go 代码在运行时检测版本,可以通过以下例子实现。

    示例 2.2 version.go

    package main
    
    import (
    	"fmt"
    	"runtime"
    )
    
    func main() {
    	fmt.Printf("%s", runtime.Version())
    }
    

    这段代码将会输出 go1.4.2 或类似字符串。

  7. 更新版本

    你可以在 发布历史 页面查看到最新的稳定版。

    当前最新的稳定版 Go 1 系列于 2012 年 3 月 28 日发布。

    Go 的源代码有以下三个分支:

    • Go release:最新稳定版,实际开发最佳选择
    • Go weekly:包含最近更新的版本,一般每周更新一次
    • Go tip:永远保持最新的版本,相当于内测版

    当你在使用不同的版本时,注意官方博客发布的信息,因为你所查阅的文档可能和你正在使用的版本不相符。

4 在 Mac OS X 上安装 Go

如果你想要在你的 Mac 系统上安装 Go,则必须使用 Intel 64 位处理器,Go 不支持 PowerPC 处理器。

你可以通过该页面查看有关在 PowerPC 处理器上的移植进度:https://codedr-go-ppc.googlecode.com/hg/。

注意事项

在 Mac 系统下使用到的 C 工具链是 Xcode 的一部分,因此你需要通过安装 Xcode 来完成这些工具的安装。你并不需要安装完整的 Xcode,而只需要安装它的命令行工具部分。

你可以在 下载页面 页面下载到 Mac 系统下的一键安装包或源代码自行编译。

通过源代码编译安装的过程与环境变量的配置与在 Linux 系统非常相似,因此不再赘述。

5 在 Windows 上安装 Go

你可以在 下载页面 页面下载到 Windows 系统下的一键安装包。

前期的 Windows 移植工作由 Hector Chu 完成,但目前的发行版已经由 Joe Poirier 全职维护。

在完成安装包的安装之后,你只需要配置 $GOPATH 这一个环境变量就可以开始使用 Go 语言进行开发了,其它的环境变量安装包均会进行自动设置。在默认情况下,Go 将会被安装在目录 c:\go 下,但如果你在安装过程中修改安装目录,则可能需要手动修改所有的环境变量的值。

如果你想要测试安装,则可以使用指令 go run 运行 hello_world1.go。

如果发生错误 fatal error: can’t find import: fmt 则说明你的环境变量没有配置正确。

如果你想要在 Windows 下使用 cgo (调用 C 语言写的代码),则需要安装 MinGW,一般推荐安装 TDM-GCC。如果你使用的是 64 位操作系统,请务必安装 64 位版本的 MinGW。安装完成进行环境变量等相关配置即可使用。

在 Windows 下运行在虚拟机里的 Linux 系统上安装 Go

如果你想要在 Windows 下的虚拟机里的 Linux 系统上安装 Go,你可以选择使用虚拟机软件 VMware,下载 VMware player,搜索并下载一个你喜欢的 Linux 发行版镜像,然后安装到虚拟机里,安装 Go 的流程参考第 2.3 节中的内容。

6 安装目录清单

你的 Go 安装目录($GOROOT)的文件夹结构应该如下所示:

README.md, AUTHORS, CONTRIBUTORS, LICENSE

  • /bin:包含可执行文件,如:编译器,Go 工具
  • /doc:包含示例程序,代码工具,本地文档等
  • /lib:包含文档模版
  • /misc:包含与支持 Go 编辑器有关的配置文件以及 cgo 的示例
  • /os_arch:包含标准库的包的对象文件(.a
  • /src:包含源代码构建脚本和标准库的包的完整源代码(Go 是一门开源语言)
  • /src/cmd:包含 Go 和 C 的编译器和命令行脚本

7 Go 运行时(runtime)

尽管 Go 编译器产生的是本地可执行代码,这些代码仍旧运行在 Go 的 runtime(这部分的代码可以在 runtime 包中找到)当中。这个 runtime 类似 Java 和 .NET 语言所用到的虚拟机,它负责管理包括内存分配、垃圾回收(第 10.8 节)、栈处理、goroutine、channel、切片(slice)、map 和反射(reflection)等等。

runtime 主要由 C 语言编写(Go 1.5 开始自举),并且是每个 Go 包的最顶级包。你可以在目录 $GOROOT/src/runtime 中找到相关内容。

垃圾回收器 Go 拥有简单却高效的标记-清除回收器。它的主要思想来源于 IBM 的可复用垃圾回收器,旨在打造一个高效、低延迟的并发回收器。目前 gccgo 还没有回收器,同时适用 gc 和 gccgo 的新回收器正在研发中。使用一门具有垃圾回收功能的编程语言不代表你可以避免内存分配所带来的问题,分配和回收内容都是消耗 CPU 资源的一种行为。

Go 的可执行文件都比相对应的源代码文件要大很多,这恰恰说明了 Go 的 runtime 嵌入到了每一个可执行文件当中。当然,在部署到数量巨大的集群时,较大的文件体积也是比较头疼的问题。但总得来说,Go 的部署工作还是要比 Java 和 Python 轻松得多。因为 Go 不需要依赖任何其它文件,它只需要一个单独的静态文件,这样你也不会像使用其它语言一样在各种不同版本的依赖文件之间混淆。

8 Go 解释器

。使用一门具有垃圾回收功能的编程语言不代表你可以避免内存分配所带来的问题,分配和回收内容都是消耗 CPU 资源的一种行为。

Go 的可执行文件都比相对应的源代码文件要大很多,这恰恰说明了 Go 的 runtime 嵌入到了每一个可执行文件当中。当然,在部署到数量巨大的集群时,较大的文件体积也是比较头疼的问题。但总得来说,Go 的部署工作还是要比 Java 和 Python 轻松得多。因为 Go 不需要依赖任何其它文件,它只需要一个单独的静态文件,这样你也不会像使用其它语言一样在各种不同版本的依赖文件之间混淆。

8 Go 解释器

因为 Go 具有像动态语言那样快速编译的能力,自然而然地就有人会问 Go 语言能否在 REPL(read-eval-print loop)编程环境下实现。Sebastien Binet 已经使用这种环境实现了一个 Go 解释器,你可以在这个页面找到:https://github.com/sbinet/igo。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Go基础系列:Go安装与环境配置 的相关文章

  • ECharts——运行错误[TypeError: Cannot read property ‘type‘ of undefined]解决方案

    issues https github com apache echarts issues 13943 问题描述 Uncaught TypeError span class token operator span Cannot read p
  • 基础网络爬虫(Web crawler)相关技术浅析

    文章目录 前言基本概念Robots协议基本原理现状概况爬虫软件跨语言Selenium PythonurllibrequestsScrapyPyspider JavaWebMagicWebCollector 技术分析网络请求获取请求浏览器开发
  • Vue——整合EChart

    解决方案 span class token operator lt span template span class token operator gt span span class token operator lt span div
  • Python——gym运行错误【‘function‘ object has no attribute ‘Viewer‘】解决方案

    问题描述 function object has no attribute Viewer 问题分析 gym破坏性升级 xff0c 版本不兼容 解决方案 方法一 xff1a Python Gym ImportError cannot impo
  • 大学阶段总结——大四

    大四一年基本上在校外实习 xff0c 能写的东西不多 毕业设计从一月份开始做 xff0c 实际编码实际时间70天左右 xff0c 除因设备限制以外 xff0c 基本完成设计内容 大学确实单了四年 这一年主要学习Spring Cloud Al
  • Python——各类品牌库爬虫Demo

    解决方案 源代码 xff1a https gitee com shentuzhigang mini project tree master brand crawler 唯品会 span class token keyword import
  • 大学阶段总结

    总结一下自己的大学生活 学业 大一基本上是在课业学习和ACM训练的平稳有序的生活中度过 xff0c 也没干什么其他事了 上课学习学习 xff0c 错 xff0c 玩玩手机 xff0c 所以我两个学期的高数都是最后靠老师拉到及格 xff0c
  • 人生规划(Flag)

    生活 房 xff08 杭州住宅428w xff0c 商业128w xff0c 老家128w xff09 车 xff08 32w xff09 存款 xff08 100w xff09 结婚 在杭州干十年 xff0c 先赚个首付 xff0c 再根
  • 博客停更声明

    本博客自2022年7月1日起 xff0c 不再新增内容 之后所有新增文章将push到GitHub中 xff0c 再通过Vuepress以GitHub Page的形式发布 历史文章根据需要迁移与更新 个人网站如下 xff1a 申屠志刚 htt
  • vnc连接成功后黑屏的问题

    新弄了一个服务器 安装各种服务 装VNC遇到问题 黑屏 网上找了各种方式均为解决 最终探索出了如下解决方法 1 修改 vnc xstartup文件 首先文件权限最好设置为777 原来为 只看最后 if f etc X11 xinit xin
  • 资源-Windows10-2020原版镜像下载地址(20H2)以及1809、1803、1709

    说明 Windows10 2020原版镜像下载地址 xff08 20H2 xff09 以及Windows10 1809企业LTSC版下载地址 PS xff1a 何为LTSC版 LTSC版即为长期服务版 xff08 你也可以理解成企业精简版
  • 交通标志识别

    原文链接 xff1a https blog csdn net Mind programmonkey article details 93194997
  • 关于YOLOv3的一些细节

    原文链接 xff1a https www jianshu com p 86b8208f634f 本文是我对YOLO算法的细节理解总结 xff0c 本文的阅读前提是已读过YOLO相关论文 xff0c 文中不会谈及YOLO的发展过程 xff0c
  • Giou YOLOv3 | CVPR2019,通用,更优的检测框损失函数

    这篇论文提出的GIou损失函数 xff0c 是一种目标检测领域用于回归目标框损失函数 该Trick适用于任何目标检测算法 本文以YOLOv3为例进行阐述 论文 xff1a Generalized Intersection over Unio
  • ubuntu18.04+CUDA10+caffe+openpose环境配置与应用

    最近老板谈到了一个项目 xff0c 需要通过人的行为姿势来初步判断人在干嘛 xff0c 然后我就找到了openpose xff0c 找到源码之后 xff0c 我又粗略的看了下别人写的相关博客还有其他资料 xff0c 觉得也没什么大不了 xf
  • ubuntu18.04安装tensorflow-gpu报错

    今天因工作需要 xff0c 就打算在ubuntu系统上安装tensorflow gpu 刚开始我就直接在中断输入 pip install tensorflow gpu 61 61 1 13 1 但是发现下载速度炒鸡慢 xff0c 关键是下载
  • ubuntu18.04安装ROS Melodic的安装与卸载

    step1 设置软件源 sudo sh c 39 echo 34 deb http packages ros org ros ubuntu lsb release sc main 34 gt etc apt sources list d r
  • Win10上yolov3的配置及使用教程(VS2019)

    yolo论文翻译 或https zhuanlan zhihu com p 35023499 yolo官网 目录 硬件环境 安装教程 安装CUDA和cuDNN 下载darknet 修改darknet vcxproj 修改darknet sln
  • LabelImg的安装出现No module named 'libs.resources'错误

    如果出现No module named libs resources xff0c 直接看第7点 1 下载labelImg github地址 xff1a https github com tzutalin labelImg 34 34 34
  • Github网站重定向到自己的域名访问

    不多说 xff0c 上干货 xff01 首先你得有一个能访问搭建好的仓库网站 xff0c 而且是可视化的 如果没有请自行百度 xff01 开始 xff01 第一步 xff1a 打开你的Settings xff08 设置 xff09 xff0

随机推荐

  • web项目管理系统的设计

    简介 某某管理系统 xff08 员工信息 xff0c 学生成绩 xff0c 办事流程等等 xff09 应该是很多web开发者最先接触到的项目之一 xff0c 也是许多非科技企业主要维护的项目 xff0c 可以说是学习web项目最佳练手工具
  • 联邦学习算法介绍-FedAvg详细案例-Python代码获取

    联邦学习算法介绍 FedAvg详细案例 Python代码获取 一 联邦学习系统框架二 联邦平均算法 xff08 FedAvg xff09 三 联邦随梯度下降算法 FedSGD xff09 四 差分隐私随联邦梯度下降算法 DP FedSGD
  • 误勾掉Android studio4.2的Kotlin插件

    在更新安装插件时候勾掉了 Plugins中的Kotlin 重新启动时候 xff0c 导致安卓无法启动 xff0c 弹出警告 xff1a Missing Essential Plug org jetbrains android Please
  • Java中一个字符串去掉所有数字,只留下字母

    span class token keyword public span span class token keyword static span span class token keyword void span span class
  • Go中优雅的获取Map元素的多种方法

    Go语言获取map元素教程 Go 语言 中要获取 map 中的元素 xff0c 除了使用 遍历 的方式 xff0c 我们还可以使用 key 做为索引的形式来获取 map 指定 key 的元素 根据 map 的 key 获取 map 的元素
  • Go中的nil是是什么?和java的null有区别吗?

    Go面试基础 xff1a Go中的nil是是什么 xff1f 和java的null有区别吗 xff1f 前言 go语言中 xff0c 有一个和java里的null很相似的变量为nil xff0c 但它其实还是有很多特性的 xff0c 下面让
  • 大厂面试必会语言:GO语言入门,看这一篇就够了

    前言 最近大厂的面试岗位 xff0c 越来越多要求要会go语言 xff0c 那么go要怎么学呢 xff1f 其实go的入门不难 xff0c 下面给大家推荐一些go的教程 官方教程 Language Specification go 的语法说
  • 无需安装!Windows11网页版来了!一键带你体验win11!

    前言 微软官方在 6 月 24 号正式发布了 Windows 11 xff0c 我也凑了个热闹 xff0c 在发布前用虚拟机安装了那个闹的沸沸扬扬的 Windows 11 镜像泄露版 xff0c 抢先帮大家体验了一下 虽说泄露版终归是较早的
  • Go语言里如何采用面向对象编程?Go中一样能够面向对象!

    Go 里也有面向对象 Go语言虽然没有class xff0c 不过Go也是可以实现Object Oriented的 接下来让我们尝试在Go中使用面向对象 xff0c 看看能否找到最佳实践 使用 embed type 实现继承 Go 中的嵌入
  • Go 面试系列:如何比较GO中的结构体?

    结构体是什么 在 Go 语言中有个基本类型 xff0c 开发者们称之为结构体 xff08 struct xff09 是 Go 语言中非常常用的 xff0c 基本定义 xff1a span class token keyword type s
  • Go面试系列:Goroutine为什么设计为没有ID?

    GoroutineID 是什么 我们要知道 xff0c 为什么大家会下意识的想去要 GoroutineID xff0c 下面引用 Go 语言圣经中的表述 xff1a 在大多数支持多线程的操作系统和程序语言中 xff0c 当前的线程都有一个独
  • MySQL常见面试题:什么是主从延时?如何降低主从延时?

    1 背景 高并发这个阶段 xff0c 肯定是需要做读写分离的 xff0c 啥意思 xff1f 因为实际上大部分的互联网公司 xff0c 一些网站 xff0c 或者是 app xff0c 其实都是读多写少 所以针对这个情况 xff0c 就是写
  • SSL handshake failed: LDAP链接失败解决方法

    部署后系统抛出异常 xff1a org apache directory ldap client api exception InvalidConnectionException SSL handshake failed at org ap
  • Supervisor 使用说明,轻松管理进程

    Supervisor 使用说明 xff0c 轻松管理进程 导读 要想在终端后台常驻进程 xff0c 首先想到的是在命令后加 amp 符号 xff0c 来达到隐藏程序在后台的目的 xff0c 尽管看起来进程已经在后台运行了 xff0c 实际上
  • 一文搞得Go mod!超详细使用教程,管理好你的go包!

    go语言包管理工具 go mod 详细介绍 通常来说我们创建某个项目都是直接使用IDE来进行创建 xff0c 当然了使用vs code这种文本编辑器也可以 xff0c 所以说使用这些工具来创建一个go的开发环境 xff0c 是几乎不需要设置
  • Go语言面试系列:Go基础类型大全

    Go语言面试系列 xff1a Go基础类型大全 go语言自带的基础类型包括 int xff1a 有符号的整数类型 xff0c 具体占几个字节要看操作系统的分配 xff0c 不过至少分配给32位 uint xff1a 非负整数类型 xff0c
  • 微信浏览器的F12大法!学会随意修改!

    程序员 xff0c 尤其是前端程序员可能都知道什么是F12大法 xff1a 按下F12 xff0c 启动浏览器的调试窗口 xff0c 网页的秘密一览无遗 通过浏览器的调试窗口 xff0c 我们可以看到浏览器和web服务器的所有通信数据 xf
  • 2022届薪资倒挂,白菜总包近40w,如何破?

    为什么互联网大厂校招的薪资一年比一年高 xff1f 为什么作为打工人的我们 xff0c 总是被倒挂 xff1f 其实互联网公司倒挂现象非常普遍 xff0c 很多公司应届生比工作多年的员工工资还要高 我认为薪资倒挂并不是坏事 xff0c 能薪
  • 应届生想在大厂中快速晋升,这些你都要懂

    前言 作为一个刚入职的校招生 xff0c 学会如何在大厂中快速晋升 xff0c 对自己的职业发展有很大的帮助 这篇文章带领大家简单的了解下想要晋升 xff0c 你需要知道说明 xff1f 职级 不同公司 xff0c 特别是成熟的互联网公司
  • Go基础系列:Go安装与环境配置

    1 平台与架构 Go 语言开发团队开发了适用于以下操作系统的编译器 xff1a LinuxFreeBSDMac OS X xff08 也称为 Darwin xff09 目前有2个版本的编译器 xff1a Go 原生编译器 gc 和非原生编译