Golang中将函数输出赋值给变量的方法
Golang中将函数输出赋值给变量的方法 你好, 我是Go语言的新手,需要各位Gopher的一点帮助。我想做的是将下面这个函数的输出放入一个名为“hmc_uuid”的变量中。
func (s *Session) getManaged() {
// mgdurl := s.url + "/rest/api/uom/LogicalPartition"
mgdurl := s.url + "/rest/api/uom/ManagementConsole"
request, err := http.NewRequest("GET", mgdurl, nil)
request.Header.Set("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8")
response, err := s.client.Do(request)
if err != nil {
log.Fatal(err)
} else {
defer response.Body.Close()
contents, err := ioutil.ReadAll(response.Body)
if err != nil {
log.Fatal(err)
}
if response.StatusCode != 200 {
log.Fatalf("Error getting LPAR informations. status code: %d", response.StatusCode)
}
var feed Feed
new_err := xml.Unmarshal(contents, &feed)
if new_err != nil {
log.Fatal(new_err)
}
fmt.Printf("AtomID: %v\n", feed.Entry.Content.ManagementConsole.Metadata.Atom.AtomID)
fmt.Printf("AtomCreated: %v\n", feed.Entry.Content.ManagementConsole.Metadata.Atom.AtomCreated)
更多关于Golang中将函数输出赋值给变量的方法的实战教程也可以访问 https://www.itying.com/category-94-b0.html
你好Holloway,
感谢你的回复。是的,它们是字符串。所以,如果我的理解正确的话,我需要创建一个新的函数,仅仅是为了将我的第一个函数的输出传递到一个变量中?
更多关于Golang中将函数输出赋值给变量的方法的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
再多一点信息……我试图将“AtomID”的输出存入一个名为“hmc_uuid”的变量中。
哦,还有,谢谢兄弟……我真的很喜欢 Go。
marvjone:
fmt.Printf(“AtomID: %v\n”, feed.Entry.Content.ManagementConsole.Metadata.Atom.AtomID) fmt.Printf(“AtomCreated: %v\n”, feed.Entry.Content.ManagementConsole.Metadata.Atom.AtomCreated)
这两个 feed 的类型是什么?
在这种情况下,你的函数应该将这两个值作为类型返回。假设它们是字符串,那么代码类似这样:
func UUID(...) (id, created string) {
... // 你的代码在这里,不要包含那些 fmt.Printf
return feed.Entry.Content.ManagementConsole.Metadata.Atom.AtomID,
feed.Entry.Content.ManagementConsole.Metadata.Atom.AtomCreated
}
然后你可以调用这个函数,并将返回值输出到你自己的变量中。例如:
uuid, time := UUID()
顺便欢迎来到 Golang Bridge!🚀🎆
要将函数的输出赋值给变量,你需要修改函数使其返回所需的值。以下是修改后的示例:
func (s *Session) getManaged() (string, error) {
mgdurl := s.url + "/rest/api/uom/ManagementConsole"
request, err := http.NewRequest("GET", mgdurl, nil)
if err != nil {
return "", err
}
request.Header.Set("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8")
response, err := s.client.Do(request)
if err != nil {
return "", err
}
defer response.Body.Close()
if response.StatusCode != 200 {
return "", fmt.Errorf("error getting LPAR informations. status code: %d", response.StatusCode)
}
contents, err := ioutil.ReadAll(response.Body)
if err != nil {
return "", err
}
var feed Feed
if err := xml.Unmarshal(contents, &feed); err != nil {
return "", err
}
hmc_uuid := feed.Entry.Content.ManagementConsole.Metadata.Atom.AtomID
return hmc_uuid, nil
}
使用示例:
hmc_uuid, err := s.getManaged()
if err != nil {
log.Fatal(err)
}
fmt.Printf("HMC UUID: %s\n", hmc_uuid)
如果你还需要其他字段,可以返回结构体:
func (s *Session) getManaged() (*ManagementConsoleInfo, error) {
// ... 前面的代码相同
return &ManagementConsoleInfo{
AtomID: feed.Entry.Content.ManagementConsole.Metadata.Atom.AtomID,
AtomCreated: feed.Entry.Content.ManagementConsole.Metadata.Atom.AtomCreated,
}, nil
}
type ManagementConsoleInfo struct {
AtomID string
AtomCreated string
}
使用示例:
info, err := s.getManaged()
if err != nil {
log.Fatal(err)
}
fmt.Printf("AtomID: %v\n", info.AtomID)
fmt.Printf("AtomCreated: %v\n", info.AtomCreated)

