猿问

在 go lang 的另一个函数中使用一个函数的变量

   package main


import (

   "encoding/json"

  // "flag"

    //"fmt"

    "strconv"

  "html/template"

  "time"

  // "log"

  "strings"

  "net/http"

  "k8s.io/apimachinery/pkg/apis/meta/v1"

  "k8s.io/client-go/kubernetes"

  "k8s.io/client-go/tools/clientcmd"

)



type microservice_details struct{

  Deployment_name string `json:"Deployment_name"`

  Namespace string        `json:"Namespace"`

  Image_tag string


}


type namespace_details struct {   

  Namespace []string 

}


var templates = template.Must(template.ParseGlob("./*.html"))


var label_name string

var namespace string

var microservice ="/microservice/"

var detailed_view="/detailed/"

var kube_config_path="/home/saivamsi/.kube/config"



var config, _ = clientcmd.BuildConfigFromFlags("", kube_config_path)

var clientset, _ = kubernetes.NewForConfig(config)


func main() {

  templates = template.Must(template.ParseGlob("./*.html"))

  http.Handle("/css/", http.StripPrefix("/css/", http.FileServer(http.Dir("css"))))

      http.Handle("/jpeg/", http.StripPrefix("/jpeg/", http.FileServer(http.Dir("css"))))

      http.HandleFunc("/", homepage)

      http.HandleFunc(microservice, Deployment)


      http.ListenAndServe(":8801",nil)


}


func homepage(w http.ResponseWriter, r *http.Request){

  namespace,_:=clientset.CoreV1().Namespaces().List(v1.ListOptions{})

  namespace_tmp := namespace_details{}        

           for _,s := range namespace.Items{

             namespace_tmp.Namespace = append(namespace_tmp.Namespace,s.Name)

           }

           templates.ExecuteTemplate(w,"homepage2.html",namespace_tmp)


}


如何在部署函数中使用主页函数的命名空间变量。我需要在 go 模板中使用它们。


我必须在 microservices.html 中使用该命名空间。我尝试了很多东西但没有奏效。


墨色风雨
浏览 152回答 1
1回答

紫衣仙女

Go使用块在词法范围内。这意味着在函数内声明的任何变量ABC()都不能从其他函数访问Xyz()。如果你需要这样的“共享”,你必须namespace在全局定义变量homepage,或者通过引用传递homepage,然后deployment。
随时随地看视频慕课网APP

相关分类

Go
我要回答