Golang中应该传递什么值以及如何传递给函数
Golang中应该传递什么值以及如何传递给函数
我有一个函数 f5.ModifyVirtualServer(vs.Name, config),它使用了如下所示的结构体:
type VirtualServer struct {
Name string `json:"name,omitempty"`
Partition string `json:"partition,omitempty"`
FullPath string `json:"fullPath,omitempty"`
Generation int `json:"generation,omitempty"`
Rules []string `json:"rules,omitempty"`
我想将 Rules 的值传递给上述函数,该值为 "/Common/Tetration_TCP_L4_ipfix"
函数代码如下:
func (b *BigIP) ModifyVirtualServer(name string, config *VirtualServer) error {
return b.put(config, uriLtm, uriVirtual, name)
}
更多关于Golang中应该传递什么值以及如何传递给函数的实战教程也可以访问 https://www.itying.com/category-94-b0.html
想了解更多关于Go语言指针的内容
Go语言的指针特性继承自C语言。
更多关于Golang中应该传递什么值以及如何传递给函数的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
我的示例不应直接照搬。出现错误的原因是 VirtualServer 结构体需要从其他包导入,ModifyVirtualServer 函数也是如此。您应该为 VirtualServer 和 ModifyVirtualServer 都加上它们所属的包名前缀。
你的意思是这样吗:
vs := VirtualServer{"Name","Partition","FullPath",1,[]string{"/Common/Tetration_TCP_L4_ipfix"}}
ModifyVirtualServer("name", &vs)
Common/Tetration_TCP_L4_ipfix
感谢 @imatmati,这个方法有效!!!
for _, vs := range vservers.VirtualServers {
fmt.Printf(" Name: %s Virtual Server type is %s %s\n ", vs.Name, vs.IPProtocol, vs.Rules)
vs.Rules = []string{"/Common/Tetration_TCP_L4_ipfix"}
//vs.Description = "Modified Sanjay Shitole"
f5.ModifyVirtualServer(vs.Name, &vs)
}
}
go run f5gohello.go
TCP iRule exists on your local machine
UDP iRule exists on your local machine
Attempting to connect...
Checking TCP irule exists on bigip ......
Name: Tetration_TCP_L4_ipfix
TCP irule Exists on BIG-IP
imatmati:
vs := VirtualServer{“Name”,“Partition”,“FullPath”,1,[]string{"/Common/Tetration_TCP_L4_ipfix"}}
这让我遇到了错误
for _, vs := range vservers.VirtualServers {
fmt.Printf(" Name: %s Virtual Server type is %s %s\n ", vs.Name, vs.IPProtocol, vs.Rules)
vs := VirtualServer{"Name", "Partition", "FullPath", 1, []string{"/Common/Tetration_TCP_L4_ipfix"}}
//vs.Description = "Modified Sanjay Shitole"
f5.ModifyVirtualServer(vs.Name, &vs)
}
go run f5gohello.go
# command-line-arguments
./f5gohello.go:175:9: undefined: VirtualServer
SJC-ML-00028512:tet shitole$
在Go语言中,你需要创建一个VirtualServer结构体实例,设置Rules字段的值,然后将该实例的指针传递给ModifyVirtualServer函数。
示例代码:
// 创建VirtualServer配置
config := &VirtualServer{
Name: vs.Name, // 保持原有名称
Partition: "Common", // 根据实际情况设置分区
Rules: []string{"/Common/Tetration_TCP_L4_ipfix"},
}
// 调用函数
err := f5.ModifyVirtualServer(vs.Name, config)
if err != nil {
// 处理错误
log.Printf("修改虚拟服务器失败: %v", err)
}
如果你只想更新Rules字段而保持其他字段不变,可以这样做:
config := &VirtualServer{
Rules: []string{"/Common/Tetration_TCP_L4_ipfix"},
}
err := f5.ModifyVirtualServer(vs.Name, config)
if err != nil {
log.Printf("修改虚拟服务器失败: %v", err)
}
注意:由于结构体字段使用了omitempty标签,未设置的字段在JSON序列化时会被忽略,不会影响服务器上现有的配置值。

