aaa

第 6095 号会员 /

回复了 aaa 创建的主题: 如何判断一个interface{}所持有的值是否为其类型的零值?

        switch val := fv.Interface(); f.Type.Kind(){
            case reflect.String:
                if !reflect.DeepEqual(val,""){
                    continue
                }
            case reflect.Struct:
                if ty.String() == "time.Time" {
                    if reflect.DeepEqual(val,time.Time{}){
                        continue
                    }
                }
            case  reflect.Int, reflect.Int64, reflect.Int32, reflect.Int8, reflect.Int16,reflect.Uint,reflect.Uint8, 
                  reflect.Uint16, reflect.Uint32, reflect.Uint64,reflect.Float32, reflect.Float64:
                if !reflect.DeepEqual(val,0){
                    continue
                }
        }

我执行一条SQL命令, 经过多少次switch 和 for 大循环; 不断反射,…………………….
我都开始怀疑人生了…………..
我都开始怀疑人生了…………..
我都开始怀疑人生了…………..
我都开始怀疑人生了…………..
我都开始怀疑人生了…………..

回复了 dyllen 创建的主题: go web自定义路由,可以用http.FileServer处理静态文件吗?我的好像不行呀!

package frame

// 报头数据类型: Header:ContentType
var ContentType = map[string]string{
//媒体格式
“html”: “text/html;charset=utf-8”,
“xml”: “text/xml”,
“css”: “text/css”,
“js”: “text/javascript”, //“application/javascript” 这种方式IE 678不支持; 暂时统一用这种就好, 而新规application/javascript比较正确,本来JS就是数据类型;
“txt”: “text/plain”,
“png”: “image/png”,
“jpg”: “image/jpeg”,
“gif”: “image/gif”,
//数据格式
“zip”: “application/zip”,
“gzip”: “application/gzip”,
“json”: “application/json”, //这可不JS
}

回复了 dyllen 创建的主题: go web自定义路由,可以用http.FileServer处理静态文件吗?我的好像不行呀!

// 静态WEB服务:
func (this *HttpHandler) serveStatic(w http.ResponseWriter, r *http.Request) bool {
    path := r.URL.Path
    if path == `` || path == `/` {
        return false
    }
    //判断是否支持GZIP压缩; //测试表明浏览器第一个都是gzip; 不排除特殊的,暂时不考虑;
    isGzip := Config.Http.Gzip && strings.HasPrefix(r.Header.Get("Accept-Encoding"), "gzip")
    w.Header().Set("Content-Type", "text/html;charset=utf-8")

    // 以前缀
    if strings.HasPrefix(path, Config.Http.StaticDir) {
        // 获取后缀
        strs := strings.Split(path, `.`)
        if len(strs) == 1 {
            return false
        }
        //'正则替换下OK'
        if isGzip && regexp.MustCompile(`(^|,)`+strs[1]+`[,$]`).MatchString("html,htm,txt,js,json,xml") {
            // 读取文件
            data, err := ioutil.ReadFile(`.` + path)

            if err != nil {
                http.NotFoundHandler().ServeHTTP(w, r)
                // 这里需要日志系统;
                return true
            }
            //GZIP压缩;

            if tp, ok := ContentType[strs[1]]; /*vars*/ ok {
                w.Header().Set("Content-Type", tp)
            } else {
            //暂时 text/html报头
                w.Header().Set("Content-Type", "text/html;charset=utf-8")
            }

            // 这里也要设置的, 否则GOLANG根据文件头来决定返回什么格式;而这种,即使是图片,也会是text返回
            w.Header().Set("Content-Encoding", "gzip")
            w.Header().Set("Vary", "Content-Encoding")


            wbuf := &bytes.Buffer{}
            g, _ := gzip.NewWriterLevel(wbuf, 9)
            g.Write(data)
            g.Close()
            //Print(buf)
            w.Write(wbuf.Bytes())
            return true
        }
        http.ServeFile(w, r, "."+path)
        return true
    }

    // 根路径; || path == "/wpad.dat"  我发现会访问这个文件: 以后研究这个问题
    if path == "/favicon.ico" || path == "robots.txt" || path == "/wpad.dat" {
        http.ServeFile(w, r, "."+path)
        return true
    }
    return false
    // 日志系统呢? 静态文件就不要日志系统吧,没有必要;
}

回复了 dyllen 创建的主题: slice的容量是怎回事?

底层数组的事, 容量不够了就会新建底层数组,并把数据拷贝到新底层数组中