golang - 自定义全局 parameter

4 篇文章 0 订阅

目的

1. 创建 struct 用于定义参数变量
2. 参数变量复制方法
3. 全局调用参数变量方法

结构

[root@ns-yun-020049 go]# tree src
src                                <- 源码目录
├── client                         <- 程序目录
│   └── showparam.go
├── main.go                        <- 入口文件
├── models                         <- struct 结构定义
│   └── serverstruct.go
└── param                          <- 初始化参数定义位置
    └── init.go

程序说明

1. param/init.go          引用了 models.serverstruct.go struct 用于定义参数, 并根据需要进行赋值
2. client/showparam.go    在程序中使用自定义参数
3. main.go                在入口文件中使用自定义参数

程序参考

cat models/serverstruct.go

package models

type Server struct {
    Network []string
    Url string
    Version string
}

cat param/init.go

package param

import (
   "models"
)

var (
   nsnetwork = []string{"bond0.208", "bond1"}
   shnetwork = []string{"bond0"}
   shurl = "http://shurl/"
   nsurl = "http://nsurl/"
)

func LocalParmeter(hostName string ) (privParam models.Server)  {

    if hostName == "myhostname" {
         privParam.Url = shurl
         privParam.Network = shnetwork
         privParam.Version = "old"
    }else {
         privParam.Url = nsurl
         privParam.Network = nsnetwork
         privParam.Version = "new"
    }
    return
}

cat client/showparam.go

package client

import (
   "param"
   "os"
   "fmt"
   "reflect"
)

func Mtest()(){

    hostName, _ := os.Hostname()
    my := param.LocalParmeter(hostName)

    fmt.Println("==== from client package ===")
    fmt.Println(reflect.TypeOf(my))
    fmt.Println("=============")
    fmt.Println(my.Network)
    fmt.Println("==== end client package ===")

    return
}

cat main.go

package main

import (
  "fmt"
  "client"
  "param"
  "os"
)


func main(){
   hostName, _ := os.Hostname()
   client.Mtest()
   a := param.LocalParmeter(hostName)
   fmt.Println("==== from main ===")
   fmt.Println(a)
   fmt.Println("==== end main ===")
}

参考运行结果

go run main.go

==== from client package ===
models.Server
=============
[bond0.208 bond1]
==== end client package ===
==== from main ===
{[bond0.208 bond1] http://nsurl/ new}
==== end main ===
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Terry_Tsang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值