判斷是linux系統,並且uid為0,allowRoot是通過命令行傳參傳進來的,通過flag包解析出來的,可以使用go run node.go -h看到這些參數 log.Fatal傳入的是一個可變參數v ...interface{},並且可以傳入任意類型,可變參數的使用和切片很像 如果要真的傳入一 ...
判斷是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 main import ( "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) } }