為何兩次注冊handler的方法不同?
http.Handle("/video/",http.StripPrefix("/video/",fileHandler))
http.HandleFunc("/api/upload",uploadHandler)
為什么兩次使用的注冊方法不同呢?
http.Handle("/video/",http.StripPrefix("/video/",fileHandler))
http.HandleFunc("/api/upload",uploadHandler)
為什么兩次使用的注冊方法不同呢?
2021-03-29
舉報
2021-10-29
HandleFunc傳入的第二個參數是一個函數,Handle傳入的是一個實現了Handler接口的結構體。內部實現的時候,這個傳入的參數當然會被統一成一個接口,但是函數不是接口,所以需要做內部的轉型,給函數綁定一個方法,然后調用函數自己(這個算是go比較巧妙的用法)。其實HandleFunc內部的實現很簡單,最后也是調用Handle。