当前位置:首页 > 数码 > Go-如何在-中经常使用环境变量 (go如何在linux编译)

Go-如何在-中经常使用环境变量 (go如何在linux编译)

admin4个月前 (05-02)数码18

作为软件开发人员,咱们深知在名目中治感性能变量的关键性。在本篇文章中,我将引见在Golang中解决环境变量的弱小工具 .com/joho/godotenv 包。应用这个包,你可以简化解决文件的环节,确保更顺畅的开发体验。

中经常使用环境变量

步骤1:装置

首先,咱们将经常使用以下命令装置GodotEnv包

gogetgithub.com/joho/godotenv

步骤2:制造.env文件

关键步骤是在名目根目录下创立一个文件。该文件将寄存环境变量。上方是一个文件示例

DB_USER=myusernameDB_PASS=mypassword

步骤3:加载环境变量

如今,咱们可以经常使用上方的代码片段将环境变量加载到名目中:

packagemnimport("fmt""github.com/joho/godotenv""log""os")funcmain(){err:=godotenv.Load()iferr!=nil{log.Fatal("Errorloading.envfile")}dbUser:=os.Getenv("DB_USER")dbPassword:=os.Getenv("DB_PASSWORD")fmt.Printf("DatabaseUser:%sn",dbUser)fmt.Printf("DatabasePassword:%sn",dbPassword)}

解释一下上方这段代码:

godotenv.Load()

godotenv中的函数用于读取名目目录下的文件。

os.Getenv("DB_USER")

这一行担任从环境变量中失掉特定的环境变量,在本例中就是。

步骤4:应用环境变量

加载了环境变量后,就可以将它们无缝集成到代码中了。在本例中,咱们展现了如何打印数据库衔接的具体信息。不过,您还可以应用这些变量来增强运行程序的性能。

总结

github.com/joho/godotenv 包集成到Golang名目中,可以简化环境变量的治理。这种方法不只增强了运行程序的灵敏性,还有助于提高其可保养性。在您谋求出色的环节中,这种简化的方法可以确保您的代码坚持有序和高效。


一、Go安装使用1、下载Go源码包上传到/usr/local/src目录下2、编译安装Go到/usr/localtar zxvf -C /usr/local/#注:必须使用root账户或者使用sudo来解压缩Go源码包3、设置PATH环境变量,添加/usr/local/go/bin到环境变量export PATH=$PATH:/usr/local/go/bin4、安装到自定义位置Go二进制文件默认安装到/usr/local/go,但是可以安装Go工具到不同的位置,可以自行定义,只需要设置正确的环境变量。 例如,安装Go到家目录下,必须添加环境变量到$HOME/ GOROOT=$HOME/goexport PATH=$PATH:$GOROOT/bin注:安装Go到其他目录时,GOROOT必须设置为环境变量5、检查是否正确安装程序通过设置一个工作区和建立一个简单的程序,检查是否正确安装了一个简单的程序。 创建一个目录包含您的工作空间,例如/data/work,并设置GOPATH环境变量指向的位置。 export GOPATH=/data/work#如果不存在/data/work,需要新建然后,在你的工作内创建src//user/hello,如果使用github,可以使用自己的用户名代替user,在hello目录下,新建# cat mainimport fmtfunc main {(hello,world!\n)}#使用go编译 install /user/hello#上面的命令讲名叫hello(or )的程序放到你的工作区内,执行下面命令,会得到输出结果。 $GOPATH/bin/hellohello,world!#当出现hello,world!表明Go已经安装成功可以工作。 二、Go工作区介绍1、机构组织代码概述Go语言程序通常将所有的代码保存在一个工作区中。 工作区包含许多版本控制库(由Git管理)。 每个存储库包含一个或多个包。 每个包由一个或多个在一个目录中的源文件组成。 一个包的目录的路径决定其导入路径。 注:同于其他的编程环境中,每一个项目都有一个独立的工作区且工作区是紧密联系在一起的版本控制库。 2、工作区介绍工作区是一个目录层次结构,它的根目录有三个目录:src 包含Go源文件pkg包含对象和包bin 包含可执行命令Go工具创建源码包并安装二进制文件到pkg和bin目录下src目录通常包含多个版本控制库(如Git或Mercurial),跟踪一个或多个源包的开发。 下面展示一个好的工作区的例子:bin/hello# command executableoutyet # command executablepkg/linux_amd64//golang/example/stringutil.a # package objectsrc//golang/example//# Git repository metadatahello/ # command sourceoutyet/# command sourcemain_ # test sourcestringutil/ # package sourcereverse_# test /x/image//# Git repository metadatabmp/# package # package source... (many more repositories and packages omitted) ...上面的属性图展示了一个包含两个存储库(example和image)的工作区,example 存储库包含两个命令(hello,outyet),image库包含bmp包和几个其他的包。 一个典型的工作区包含包含许多软件包和命令的多个源库。 大多数程序员将所有的源代码和依赖关系保存在一个工作区中3、GOPATH环境变量设置GOPATH环境变量指定工作区的位置。 它很可能是唯一的环境变量,代码开发时需要设置。 开始,创建一个工作区目录并设置相应的gopath。 您的工作区可以位于任何你喜欢的地方,但我们将在这个文档中使用/data/work。 请注意,这不能是您的“Go安装”路径相同。 mkdir -p /data/workexport GOPATH=/data/work为了方便。 添加工作区的bin到PATH中export PATH=$PATH:$GOPATH/bin4、导入路径一个导入路径是唯一标识一个包的字符串。 一个包的导入路径对应于它在工作区内或远程存储库中的位置。 从标准库的软件包中给出了短的导入路径等。 对于您自己的包,您必须选择不可能和未来添加到标准库或其他外部库的基础路径冲突的路径。 注意,你不需要将你的代码发布到一个远程存储库之前,你可以建立它。 这只是一个很好的习惯来组织你的代码,如果你有一天会出版它。 在实践中,你可以选择任何任意的路径名称,只要它是唯一的标准库和更大的去生态系统。 我们将使用/user作为我们的基本路径。 在您的工作区中创建一个目录,以保持源代码:mkdir -p $GOPATH/src//user5、第一个项目编译并运行一个简单的程序,首先选择一个包的路径(我们将使用/user/hello)和创建在您的工作区相应的软件包目录:mkdir $GOPATH/src//user/hello创建名叫的文件,上面创建过,此处略过。 cd $GOPATH/src//user/hellogo install$GOPATH/bin/hello或者:hello如果你使用的是一个源代码管理系统,现在是一个很好的时间来初始化一个存储库,添加文件,并提交你的第一次更改。 再次,这一步是可选的:您不需要使用源代码管理来写代码。 cd $GOPATH/src//user/hellogit initInitialized empty Git repository in /data/work/src//user/hello//git add commit -m first commit[master (root-commit) bbfb477] first commit6、first librarymkdir $GOPATH/src//user/stringutil下一步,在目录下创建一个名为文件中有下列内容:// Package stringutil contains utility functions for working with stringutil// Reverse returns its argument string reversed rune-wise left to Reverse(s string) string {r := []rune(s)for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 {r[i], r[j] = r[j], r[i]}return string(r)}使用go build测试包的编译$ go build /user/stringutil如果当前位置源码包目录,只需要:go build上面操作并不会产生一个输出文件,必须使用go install,把包和对象输出到工作去的pkg目录内确认stringutil包创建完成后,修改原始,使用stringutil包:package mainimport (/user/stringutil)func main() {((\n !oG ,olleH))}无论使用go安装包还是二进制文件,所有相关的依赖都会自动安装。 所以当你安装hello程序时:$ go install /user/hello对应的stringutil包会自动安装好。 执行新的hello程序,可以看到消息已经被反转# helloHello, Go!完成上面操作之后,工作区应该为:├── bin│ └── hello# command executable├── pkg│ └── linux_amd64 # this will reflect your OS and architecture│ └── │ └── user│ └── stringutil.a # package object└── src└── └── user├── hello│ └── # command source└── stringutil└── # package source注意:go install会把库文件stringutil.a放到pkg/linux_amd64下边(目录结构跟源代码结构一样)。 这样可以go命令可以直接找到对应的包对象,避免不必要的重复编译。 linux_amd64是为了根据操作系统和你的系统架构交叉编译。 所有Go可执行程序都通过静态方式链接在一起,所以在运行时是不需要相关的包对象(库)。 7、包命令所有的Go源代码都以下面的语句开始:package name其中name就是包引用默认的名称,一个包中的所有文件必须使用同一个包名,可执行命令必须是main。 一个二进制文件下所有的包名不需要唯一,但是引用路径必须唯一8、测试Go自带了一个轻量级的测试框架,由go test和testing包组成。 可以通过新建xx_写一个测试,其中包含若干个TestXXX函数。 测试框架会自动执行这些函数;如果函数中包含tError或, 对应的测试会被判为失败。 添加一个针对stringutil的测试文件$GOPATH/src//user/stringutil/reverse_,包含以下内容:package stringutilimport testingfunc TestReverse(t *testing.T) {cases := []struct {in, want string}{{Hello, world, dlrow ,olleH},{Hello, 世界, 界世,olleH},{, },}for _, c := range cases {got := Reverse()if got != {(Reverse(%q) == %q, want %q, , got, )}}}#通过go test测试# go test /user//user/stringutil 0.002s#同样的,在包文件夹下可以忽略路径而直接执行go test[root@zabbix stringutil]# go /user/stringutil 0.002s9、远程包包的引用路径用来描述如何通过版本控制系统获取包的源代码。 go工具通过引用路径自动从远程代码仓库获取包文件。 比如本文中用的例子也对应的保存在/golang/example下。 go可以通过包的代码仓库的url直接获取、生成、安装对应的包。 [root@zabbix ~]# go get /golang/example/hello[root@zabbix ~]# $GOPATH/bin/helloHello, Go examples!如果工作区中不存在对应的包,go会将对应的包放到GOPATH环境变量指明的工作区下。 (如果包已经存在,go跳过代码拉去而直接执行go install)建议详细看一下这个,有图文

免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。

标签: Go

“Go-如何在-中经常使用环境变量 (go如何在linux编译)” 的相关文章

中-Goroutines-成功轻量级并发的高效并发原语-Go

中-Goroutines-成功轻量级并发的高效并发原语-Go

并发是现代软件开发的一个基本概念,使程序能够同时口头多个义务。在Go编程畛域,了解Goroutines是至关关键的。本文将片面概述Goroutines,它们的轻量级特性,如何经常使用go关键字创立...

Go-言语中并发的弱小效劳 (go语言语法很奇怪啊)

Go-言语中并发的弱小效劳 (go语言语法很奇怪啊)

施展效率和照应才干 并发是现代软件开发中的一个基本概念,它使程序能够同时口头多个义务,提高效率和照应才干。在本文中,咱们将讨论并发在现代软件开发中的关键性,并深化了解Go处置并发义务的共同...

在-使用-应用-中构建高性能-Echo-Web-Go (在使用应急法压缩时间时,不一定)

在-使用-应用-中构建高性能-Echo-Web-Go (在使用应急法压缩时间时,不一定)

Echo是一个高性能且易用的框架,用于构建Go语言编写的Web应用。它具备灵活的路由功能、方便的请求处理、强大的中间件支持和简单的JSON操作,非常适合快速开发API服务和Web应用。 快速...

etcd-的依赖问题最终得到解决-Go (etcd的英文全称)

etcd-的依赖问题最终得到解决-Go (etcd的英文全称)

几年前,我经常接触到一组微服务相关组件:gRPC、gRPC 网关、etcd、Protobuf 和 protoc-gen-go。一开始,它们都能很好地协同工作,并且随着新版本的发布而持续更新。...

Go-内存调配优化-在结构体中充沛应用内存 (go 内存)

Go-内存调配优化-在结构体中充沛应用内存 (go 内存)

在经常使用Golang启动内存调配时,咱们须要遵照一系列规定。在深化了解这些规定之前,咱们须要先了解变量的对齐形式。 Golang的unsafe包中有一个函数Alignof,签名如下: f...

的原因-Go-Map-语言不支持并发读写 (的原因英语)

的原因-Go-Map-语言不支持并发读写 (的原因英语)

在Go语言的设计中,为了防止数据竞态,不同于一些其他语言,map并没有提供内置的锁机制。这样设计的目的是为了鼓励开发者使用更加精细的同步措施,以适应不同的并发场景。 Map的数据结构...

内存效率-多用途-语言中使用切片代替数组的优点-动态大小-Go (内存使用效率)

内存效率-多用途-语言中使用切片代替数组的优点-动态大小-Go (内存使用效率)

引言 在 Go 语言中,数组是一种固定长度的数据结构,而切片则是一种可变长度的数据结构。虽然数组和切片都可以存储相同类型的数据元素,但切片在使用上有其独到的优势,本文将通过介绍切片的特性来解释为...

14条超乎想象的Go接口最佳实践

14条超乎想象的Go接口最佳实践

近年来,越来越多的开发者开始关注 Go 语言,它以其高效、简洁和高并发性而闻名。在 Go 语言中,接口是一个非常强大的特性,它可以帮助我们定义和实现不同的行为。本文将介绍 Go 语言中接口设计的一...