我想使用一些标志同时运行两个函数,但如果它们不调用标志,则下面的 golang 脚本正在运行,go run ping.go即它们将使用默认值。
下面的 ping.go 文件
package main
import (
// "io/ioutil"
// "log"
"flag"
"fmt"
"net/http"
"sync"
"time"
)
func pingone() {
websiteone := flag.String("websiteone", "adminone", "Zdefault website")
flag.Parse()
// using/printing flags to avoid error
fmt.Println("website:", *websiteone)
eurl := "https://thesiteone.com/"
happ := "/subpage"
for {
resp, err := http.Get(eurl + *websiteone + happ)
if err != nil {
continue
}
fmt.Println(resp)
time.Sleep(2 * time.Second)
}
}
func pingtwo() {
websitetwo := flag.String("websitetwo", "admintwo", "Zdefault website")
flag.Parse()
// using/printing flags to avoid error
fmt.Println("website:", *websitetwo)
eurltwo := "https://thesitetwo.com/"
happtwo := "/subpage"
for {
resp, err := http.Get(eurltwo + *websitetwo + happtwo)
if err != nil {
continue
}
fmt.Println(resp)
time.Sleep(2 * time.Second)
}
}
func main() {
var wg sync.WaitGroup
fmt.Printf("Both pingone and pingtwo started\n")
wg.Add(2)
go pingone()
go pingtwo()
wg.Wait()
fmt.Printf("both pingone and pingtwo have finished\n")
}
但是如果我们同时调用这两个标志, go run ping.go --websitetwo='secondsuburl' --websiteone='firstsuburl' 结果它们就会被破坏
** 关于上面的代码 **
该脚本将运行两个函数,它们都使用同步同时对不同的网站执行 ping 操作。
不要混淆,这里的 url 被分成三部分/字符串:第二部分是标志定义的地方。
下面输出
root@localhost:~# go run ping.go --websiteone=admin1 --websitetwo=admin2
Both pingone and pingtwo started
flag provided but not defined: -websiteone
Usage of /tmp/go-build010683275/b001/exe/ping:
-websiteone string
Zdefault website (default "adminone")
website: admin1
-websitetwo string
Zdefault website (default "admintwo")
exit status 2
MMTTMM
相关分类