gocron源码中使用的是马卡龙框架,下面这个就是安装这个框架,和一般的MVC框架很像go get gopkg.in/macaron.v1git clone https://github.com/golang/crypto.git $GOPATH/src/golang.org/x/crypto 监听80端口,使用模板引擎的简单例子 package main import "gopkg.in/macaron.v1" func main() { m := macaron.Classic()…
// getCommands func getCommands() []cli.Command { command := cli.Command{ Name: "web", Usage: "run web server", Action: runWeb, Flags: []cli.Flag{ cli.StringFlag{ Name: "host", Value: "0.0.0.0", Usage: "bind ho…
源码中有这么一句,这个函数要求返回的是[]cli.Command,cli.Command类型的切片,这个地方直接使用字面值初始化了一个切片返回去了 return []cli.Command{command} 数组的字面值初始化,一般是需要指定数组的大小,可以使用...三个点来代替大小,根据后面初始化的个数来计算,下面就是字面值初始化一个数组 arr := [...], , } for i, j := range arr { fmt.Println(i, j) } 切片和数组很类似,并且切片的底层…
在gocron.go文件的main函数中,有下面这一句,从这句代码中可以学习到切片和类型的综合运用 cliApp.Flags = append(cliApp.Flags, []cli.Flag{}...) 首先在go语言中定义一个类型需要使用type 名字 struct{},还可以给这个类型定义成员方法 type Taoshihan struct { } func (t Taoshihan) Say() string { return "my name is taoshihan" }…
结构体类型 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…
变量的声明形式是这样的 var 变量名字 类型 = 表达式var ( AppVersion = "1.5" BuildDate, GitCommit string)类型可以被省略,这时候会通过表达式推导变量的类型,AppVersion 应该是string类型表达式可以被省略,这时候会根据零值初始化机制,初始化一个值,BuildDate, GitCommit string,初始化为"" 还可以同时声明一组变量,var()声明了一组在main函数外面声明的变量是包级变量…
gocron源码中使用的是下面这个第三方包来实现的,下面就单独的拿出来测试以下效果,和官方flag包差不多 go get github.com/urfave/cli package main import ( "fmt" "log" "os" "github.com/urfave/cli" ) func main() { app := cli.NewApp() var flags []cli.Flag flags = appe…
gocron源代码中的Action那个地方,就是个空接口类型Action interface{},可以传递任意类型进去,这里是传了个函数进去 command := cli.Command{ Name: "web", Usage: "run web server", Action: runWeb, Flags: flags, } 接口是合约,任何类型只要实现了接口中的方法,那么就可以认为实现了这个接口.对于没有方法的接口interface{}类型,可以看做所有的类型都…
从 Go1.11 开始,golang 官方支持了新的依赖管理工具go modgo mod download: 下载依赖的 module 到本地 cachego mod edit: 编辑 go.modgo mod graph: 打印模块依赖图go mod init: 在当前目录下初始化 go.mod(就是会新建一个 go.mod 文件)go mod tidy: 整理依赖关系,会添加丢失的 module,删除不需要的 modulego mod vender: 将依赖复制到 vendor 下go mo…
判断是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{},并且可以传入任意类型,可变参数的使用和切片很像 如果要真的传入一个切片,那么切片类型要和参…