目的
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 ===