判斷是linux系統,并且uid為0,allowRoot是通過命令列傳參傳進來的,通過flag包決議出來的,可以使用go run node.go -h看到這些引數
if runtime.GOOS != "windows" && os.Getuid() == 0 && !allowRoot { log.Fatal("Do not run gocron-node as root user") return }
log.Fatal傳入的是一個可變引數v ...interface{},并且可以傳入任意型別,可變引數的使用和切片很像
如果要真的傳入一個切片,那么切片型別要和引數型別一致
nums := []int{1, 2, 3, 4, 5} Fatal2(nums...)func Fatal2(args ...int) { for _, arg := range args { fmt.Println(arg) }}
完整代碼:
package mainimport ( "fmt" "log" "os" "runtime")func main() { //可變引數 Fatal("hello", 1) //如果要傳切片,切片型別要和引數型別一致 nums := []int{1, 2, 3, 4, 5} Fatal2(nums...) host, _ := os.Hostname() //獲取當前目錄 wd, _ := os.Getwd() fmt.Println( host, wd, //獲取用戶ID os.Getuid(), //獲取有效用戶ID os.Geteuid(), //獲取組ID os.Getgid(), //獲取有效組ID os.Getegid(), //獲取行程ID os.Getpid(), //獲取父行程ID os.Getppid(), //獲取環境變數的值 os.Getenv("GOPATH"), //設定環境變數的值 os.Setenv("MY_NAME", "taoshihan"), //改變當前作業目錄 os.Chdir("/home/")) if runtime.GOOS != "windows" && os.Getuid() == 0 { log.Fatal("Do not run gocron-node as root user") return }}func Fatal(args ...interface{}) { for _, arg := range args { fmt.Println(arg) }}func Fatal2(args ...int) { for _, arg := range args { fmt.Println(arg) }}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/61801.html
標籤:Go
