调用flag包可以方便的获取到命令行中传递的参数,比如可以实现类似nginx执行程序获取命令行参数执行不同操作的目标 package main import ( "flag" "fmt" "os" ) func main() { var h bool var c, s string flag.BoolVar(&h, "h", false, "帮助信息") flag.StringVar(&c,…
结构体类型 type 名字 struct{},下面这段是github.com/urfave/cli包里的代码,声明了一个App的结构体类型 type App struct { // The name of the program. Defaults to path.Base(os.Args[0]) Name string // Full name of command for help, defaults to Name HelpName string // Description of the…
判断是linux系统,并且uid为0,allowRoot是通过命令行传参传进来的,通过flag包解析出来的,可以使用go run node.go -h看到这些参数 && !allowRoot { log.Fatal("Do not run gocron-node as root user") return } log.Fatal传入的是一个可变参数v ...interface{},并且可以传入任意类型,可变参数的使用和切片很像 如果要真的传入一个切片,那么切片类型要和参…
直接使用go 函数名()可以开启一个grountine,channel可以接收信息并且如果没有数据时会阻塞住channel对应的是底层数据结构的引用,复制channel和函数传参都是拷贝的引用make的时候第二个参数是1,就表示是有缓存的channel 无缓存的channel也叫同步channel c = make(chan interface{}) //开启groutine go mySig() //主grountine不能断 for { time.Sleep(time.Second) c <…