據我所知fmt,此任務沒有這樣的動詞(因為在包中調用了格式說明符)。但是,您可以做的是指定某個動詞并忽略其值。不過,這對內存不是特別友好。理想情況下,這將起作用:fmt.Scan(&a, _, &b)可悲的是,它沒有。因此,您的下一個最佳選擇是聲明變量并忽略您不想要的變量:var a,b,c intfmt.Scanf("%d %v %d", &a, &b, &c)fmt.Println(a,c)%v會讀取一個空格分隔的標記。根據您掃描的內容,您可以將流快進到您需要掃描的位置。有關 在緩沖區中查找的詳細信息,請參閱此答案。如果您正在使用 stdio 或者您不知道您的輸入可能有哪個長度,那么您在這里似乎不走運。這并不表示 %* 沒有實現,所以......我做錯了嗎?或者它只是被悄悄地省略了?...但是,它為什么要編譯?它可以編譯,因為對于編譯器來說,格式字符串與其他任何字符串一樣只是一個字符串。該字符串的內容在運行時由fmt包的函數進行評估。一些 C 編譯器可能會檢查格式字符串的正確性,但這是一個特性,而不是規范。使用 go,go vet命令將嘗試警告您有關參數不匹配的格式字符串錯誤。編輯:對于需要解析一行整數并只關心其中一些的特殊情況,您可以fmt.Scan與整數切片結合使用。以下示例從 stdin 讀取 3 個整數并將它們存儲在名為 的切片中vals:ints := make([]interface{}, 3)vals := make([]int, len(ints))for i, _ := range ints { ints[i] = interface{}(&vals[i])}fmt.Scan(ints...)fmt.Println(vals)這可能比傳統的 split/trim/strconv 鏈短。它制作了一個指針切片,每個指針都指向 中的一個值vals。fmt.Scan然后填充這些指針。有了這個,您甚至可以通過為您不想要的值一遍又一遍地分配相同的指針來忽略大多數值:ignored := 0for i, _ := range ints { if(i == 0 || i == 2) { ints[i] = interface{}(&vals[i]) } else { ints[i] = interface{}(&ignored) }}上面的例子將分配給ignore除第一個和第二個之外的所有值的地址,從而通過覆蓋有效地忽略它們。我正在嘗試使用 Gorilla 工具包的mux包在 Go Web 服務器中路由 URL。使用這個問題作為指導,我有以下 Go 代碼:func main() { r := mux.NewRouter() r.Handle("/", http.FileServer(http.Dir("./static/"))) r.HandleFunc("/search/{searchTerm}", Search) r.HandleFunc("/load/{dataId}", Load) http.Handle("/", r) http.ListenAndServe(":8100", nil)}目錄結構為:...main.gostatic\ | index.html | js\ | <js files> | css\ | <css files>Javascript 和 CSS 文件的引用index.html如下:...<link rel="stylesheet" href="css/redmond/jquery-ui.min.css"/><script src="js/jquery.min.js"></script>...當我http://localhost:8100在 Web 瀏覽器中訪問時,index.html內容已成功傳送,但是,所有js和cssURL 都返回 404。如何讓程序從static子目錄中提供文件?網絡應用程序
3 回答

小怪獸愛吃肉
TA貢獻1852條經驗 獲得超1個贊
我想你可能正在尋找PathPrefix...
func main() {
r := mux.NewRouter()
r.HandleFunc("/search/{searchTerm}", Search)
r.HandleFunc("/load/{dataId}", Load)
r.PathPrefix("/").Handler(http.FileServer(http.Dir("./static/")))
http.ListenAndServe(":8100", r)
}
- 3 回答
- 0 關注
- 206 瀏覽
添加回答
舉報
0/150
提交
取消