广告
返回顶部
首页 > 资讯 > 精选 >go项目中环境变量的配置方法
  • 250
分享到

go项目中环境变量的配置方法

2023-06-20 15:06:06 250人浏览 独家记忆
摘要

这篇文章主要介绍“Go项目中环境变量的配置方法”,在日常操作中,相信很多人在go项目中环境变量的配置方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”go项目中环境变量的配置方法”的疑惑有所帮助!接下来,请跟

这篇文章主要介绍“Go项目中环境变量的配置方法”,在日常操作中,相信很多人在go项目中环境变量的配置方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”go项目中环境变量的配置方法”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

目录
  • 一、为什么要配置文件

  • 二、在go中使用配置文件

  • 三、使用结构体的方式读取

  • 四、区分开发环境和生产环境

  • 五、在gin中集成配置文件

一、为什么要配置文件

容易编辑,配置比较集中,方便修改,在大业务量的系统里面,通过配置会方便后人理解整个系统的架构
2、做到业务代码和环境解耦,环境配置变量不侵入到代码层面
3、不同的环境切换比较方便

二、在go中使用配置文件

viper网站地址

本地安装

go get GitHub.com/spf13/viper

简单的读取配置文件

package mainimport ( "fmt" "github.com/spf13/viper")func main() { v := viper.New() v.SetConfigFile("config.yaml") if err := v.ReadInConfig(); err != nil {  fmt.Println("读取配置文件失败", err) } fmt.Println(v.Get("name"))}

在文件的同级下创建一个config.yaml的文件

name: "test"

使用go run 文件名运行文件,这样直接运行会报错找不到文件

建议配置后可以使用右键运行项目

package mainimport ( "fmt" "github.com/spf13/viper" "os" "path")func main() { // 获取项目目录 workDir, _ := os.Getwd() v := viper.New()  // 直接拼接文件目录读取 v.SetConfigFile(path.Join(workDir, "test/config.yaml")) if err := v.ReadInConfig(); err != nil {  fmt.Println("读取配置文件失败", err) } fmt.Println(v.Get("name"))}

三、使用结构体的方式读取

简单的使用

package mainimport ( "fmt" "github.com/spf13/viper" "os" "path")type ServerConfig struct { Name string `mapstructure:"name"`}func main() { // 获取项目目录 workDir, _ := os.Getwd() v := viper.New() v.SetConfigFile(path.Join(workDir, "test/config.yaml")) if err := v.ReadInConfig(); err != nil {  fmt.Println("读取配置文件失败", err) } serverConfig := ServerConfig{} if err := v.Unmarshal(&serverConfig); err != nil {  fmt.Println("解析结构体失败", err) } fmt.Println(serverConfig.Name)}

结构体的嵌套,很常见的是mysql数据库的配置

// 定义Mysql的type mysqlConfig struct { Host string `mapstructure:"host"` Port int `mapstructure:"port"` Username string `mapstructure:"username"` PassWord string `mapstructure:"password"`}type ServerConfig struct { Name string `mapstructure:"name"` // 嵌套使用,注意这个地方要和yaml中一样 MysqlConfig MySQLConfig `mapstructure:"mysql"`}// 直接使用fmt.Println(serverConfig.MySqlConfig)

四、区分开发环境和生产环境

Mac电脑上配置环境变量,在.bash_profile中导出一个环境变量,注意要关闭goland重新打开

# vim .bash_profileexport IS_DEV= truesource .bash_profile

定义方法直接获取环境变量

func GetEnvInfo(env string) bool { viper.AutomaticEnv() return viper.GetBool(env)}func main() { fmt.Println(GetEnvInfo("IS_DEV"))}

在目录下创建一个application.dev.yml和application.prod.yml的文件,分别存放不同环境下的配置

使用环境变量来读取配置完整代码

func GetEnvInfo1(env string) bool { viper.AutomaticEnv() return viper.GetBool(env)}// 定义mysql的type MySQLConfig struct { Host string `mapstructure:"host"` Port int `mapstructure:"port"` Username string `mapstructure:"username"` Password string `mapstructure:"password"`}type ServerConfig struct { Name string `mapstructure:"name"` // 嵌套使用,注意这个地方要和yaml中一样 MySqlConfig MySQLConfig `mapstructure:"mysql"`}func main() { // 获取项目目录 workDir, _ := os.Getwd() isDev := GetEnvInfo1("IS_DEV") configFileName := path.Join(workDir, "11.config/application.prod.yml") if isDev {  configFileName = path.Join(workDir, "11.config/application.dev.yml") } v := viper.New() v.SetConfigFile(configFileName) if err := v.ReadInConfig(); err != nil {  fmt.Println("读取配置文件失败", err) } serverConfig := ServerConfig{} if err := v.Unmarshal(&serverConfig); err != nil {  fmt.Println("解析结构体失败", err) } fmt.Println(serverConfig.MySqlConfig)}

五、在gin中集成配置文件

在和main.go同级的目录下创建两个xx.yml的文件

目录下创建一个config、global、initialize的文件夹

在config/config.go的文件中书写使用结构体读取配置的

package config// 定义mysql的type MySQLConfig struct { Host string `mapstructure:"host"` Port int `mapstructure:"port"` Username string `mapstructure:"username"` Password string `mapstructure:"password"`}type ServerConfig struct { Name string `mapstructure:"name"` // 嵌套使用,注意这个地方要和yaml中一样 MySqlConfig MySQLConfig `mapstructure:"mysql"`}

在global/global.go文件中定义全局变量(可能在全项目中某一个文件中需要获取配置)

var ( ServerConfig *config.ServerConfig = &config.ServerConfig{})

在initialize/config目录初始化配置

func GetEnvInfo(env string) bool { viper.AutomaticEnv() return viper.GetBool(env)}func InitConfig() { workDir, _ := os.Getwd() isDev := GetEnvInfo("IS_DEV") configFileName := path.Join(workDir, "11.config/application.prod.yml") if isDev {  configFileName = path.Join(workDir, "11.config/application.dev.yml") } v := viper.New() //文件的路径如何设置 v.SetConfigFile(configFileName) if err := v.ReadInConfig(); err != nil {  panic(err) } err := v.Unmarshal(&global.ServerConfig) if err != nil {  fmt.Println("读取配置失败") } fmt.Println(&global.ServerConfig)}

在mian.go中初始化配置文件并且打印出信息

func main() { // 初始化配置 initialize.InitConfig() fmt.Println(global.ServerConfig.MySqlConfig)}

到此,关于“go项目中环境变量的配置方法”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: go项目中环境变量的配置方法

本文链接: https://www.lsjlt.com/news/297917.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • go项目中环境变量的配置方法
    这篇文章主要介绍“go项目中环境变量的配置方法”,在日常操作中,相信很多人在go项目中环境变量的配置方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”go项目中环境变量的配置方法”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-20
  • go项目中环境变量的配置
    目录一、为什么要配置文件二、在go中使用配置文件三、使用结构体的方式读取四、区分开发环境和生产环境五、在gin中集成配置文件一、为什么要配置文件 1、容易编辑,配置比较集中,方便修改...
    99+
    2022-11-12
  • maven环境变量配置方法
    要配置Maven环境变量,您可以按照以下步骤进行操作:1. 下载Maven:首先,您需要从Maven官方网站(https://mav...
    99+
    2023-09-13
    maven
  • Android 环境变量的配置方法
       我们在创建AVD时,在命令行窗口中输入android list targets会提示:'android'不是内部或外部命令,如图1,其实这主要是由于没...
    99+
    2022-06-06
    环境 方法 环境变量 变量 Android
  • Linux环境变量配置的方法
    这篇文章主要讲解了“Linux环境变量配置的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux环境变量配置的方法”吧!Linux环境变量配置在自定义安装软件的时候,经常需要配置环境...
    99+
    2023-06-15
  • python环境变量的配置方法
    这篇文章主要介绍了python环境变量的配置方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。python环境变量的配置方法:首先鼠标右键此电脑,选择属性;然后点击高级系统设...
    99+
    2023-06-08
  • 配置python环境变量的方法
    这篇文章主要介绍配置python环境变量的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!配置python环境变量的方法:首先打开属性,找到“高级系统设置”;然后点击“环境变量”,找到Path;接着在字符串的末尾加...
    99+
    2023-06-14
  • Linux中Bash环境变量的配置方法
    Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。 以下是几种shell版本,bash是默认的: sh(全称 Bourne Shell)...
    99+
    2022-06-03
    linux 环境变量配置 linux bash 环境变量
  • Win10配置Python环境变量的方法
    这篇文章将为大家详细讲解有关Win10配置Python环境变量的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Win10配置Python环境变量的方法:首先打开电脑系统窗口,选择高级系统设置;然后点击...
    99+
    2023-06-07
  • win8/win8.1系统怎么配置java环境变量?配置java环境变量的方法
      配置java环境变量的方法: 1、在你的计算机上右击,选择其中的属性;   2、作出如下图所示的选择;   3、选择高级,再选择环境变量;   4、在这里添加一个java_home就...
    99+
    2022-06-04
    环境变量 方法 系统
  • ubuntu如何配置go环境变量
    ubuntu配置go环境变量的方法:下载好的tar解压后,将go文件夹放到/usr/local目录下。在当前用户的.bashrc文件中,添加以下代码并保存修改。export PATH=$PATH:/usr/local/go/bin执行以下命...
    99+
    2022-10-05
  • React项目中动态设置环境变量
    目录使用 dotenv 库1. 安装 dotenv 库2. 创建 .env 文件3. 在项目中使用环境变量通过命令行参数传递环境变量1. 在 package.json 中定义命令2....
    99+
    2023-05-16
    React 动态设置环境变量 React 环境变量
  • vue项目多环境配置得方法
    这篇文章主要介绍“vue项目多环境配置得方法”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue项目多环境配置得方法”文章能帮助大家解决问题。什么是多环境配置,为什...
    99+
    2022-10-19
  • ubuntu 下JDK环境变量配置方法
    检查jdk版本、卸载openjdk版本(jdk与openjdk的区别不在此赘述) 先检查java –version、javac –version命令查看版本(如图一) 经检查jdk版本为1.7.0.45;再输入rpm ...
    99+
    2022-06-04
    ubuntu 环境变量
  • go语言怎么配置环境变量
    要配置Go语言的环境变量,需要进行以下步骤:1. 下载并安装Go语言的二进制发行版,可以从官方网站(https://golang.o...
    99+
    2023-09-26
    go语言
  • Mysql环境变量配置方式
    目录Mysql环境变量配置Mysql解压缩版配置环境变量失败问题1.配置环境变量2.解决问题总结Mysql环境变量配置 一、mysql的环境变量配置步骤 1.1、在桌面选择&ldq...
    99+
    2022-12-29
    Mysql环境变量配置 Mysql环境变量 环境变量配置
  • vue项目多环境配置的实现方法
    这篇文章主要讲解了“vue项目多环境配置的实现方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue项目多环境配置的实现方法”吧!目录什么是多环境配置,为什么要多环境配置.env 文件配置...
    99+
    2023-06-20
  • Ubuntu下android adb环境变量配置方法
    系统:linux ubuntu12 1. 配置环境变量 代码如下: sudo gedit /etc/profile 在文件的最后追加一下内容(your_android-sdk...
    99+
    2022-06-06
    ubuntu 方法 adb 变量 Android
  • Tomcat配置环境变量的方法是什么
    配置Tomcat的环境变量可以通过以下方法:1. 手动配置:打开Tomcat安装目录下的bin文件夹,找到catalina.bat(...
    99+
    2023-09-15
    Tomcat
  • 详解Windows 配置Java环境变量的方法
    Java 教程 Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的高级程序设计语言。 Java 可运行于多个平台,如 Windows, Mac OS...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作