GO可变参数函数
可变参数函数,即参数数量可为0或多个的函数,声明方式如下
func f(args ...type)
- f:函数名
- args:参数统称
- …代表可变参数
- type:参数类型
一个简单示例
func p(str ...string) {
fmt.Println(strings.Join(str, ""))
}
func main() {
fmt.Printf("hello, world\n")
p("hello", ", ", "world", "!\n")
p()
}
[]# go run hello.go
hello, world
hello, world!
实现一个可执行任意命令的函数
import (
"fmt"
"os"
"os/exec"
)
func run(cmd string, args...string) {
ret, err := exec.Command(cmd, args...).Output()
if err != nil {
fmt.Println(err)
os.Exit(1)
}
fmt.Println(string(ret))
}
func main() {
run("uname", "-a")
run("cat", "/etc/redhat-release")
}
执行结果
[]# go run hello.go
Linux 4.18.0-305.3.1.el8.x86_64 #1 SMP Tue Jun 1 16:14:33 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
CentOS Linux release 8.4.2105