中级会员
  • 第 950 位会员
  • ty4z2008
  • 廖君
  • ty4z2008@gmail.com
  • 2013-11-11 04:16:24
  • Offline
  • 20 20

最近发布的主题

    暂无

最近发布的文章

    暂无

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • 评论了主题 supervisor 玩不来啊 哎
    贴一下你的日志: /tmp/supervisord.log
  • 题主应该是看到使用的时候是fmt.println()吧?在go中println是fmt包下面的一个成员函数,先看段代码: func Println(a ...interface{}) (n int, err error) { return Fprintln(os.Stdout, a...) } 从上面那段代码可以看出,这个函数内部调用了OS包中的成员函数:stdout; OS包是go与系统硬件打交到的一个包。再追溯到os包中的Stdout函数: Stdout = getStdHandle(STD_OUTPUT_HANDLE) 上面那一条代码,是os包中的一条声明语句:GetStdHandle是一个Windows API函数。它用于从一个特定的标准设备(标准输入、标准输出或标准错误)中取得一个句柄。 刚刚入门Go不久。希望能够帮到你理解
  • 我也是刚刚接触GO,希望下面的回答能够给你带来帮助: 这个net/http包里面关于ParseFrom部分的一段源码: func (r *Request) ParseForm() error { var err error if r.PostForm == nil { if r.Method == "POST" || r.Method == "PUT" { r.PostForm, err = parsePostForm(r) } if r.PostForm == nil { r.PostForm = make(url.Values) } } if r.Form == nil { if len(r.PostForm) > 0 { r.Form = make(url.Values) copyValues(r.Form, r.PostForm) } var newValues url.Values if r.URL != nil { var e error newValues, e = url.ParseQuery(r.URL.RawQuery) if err == nil { err = e } } if newValues == nil { newValues = make(url.Values) } if r.Form == nil { r.Form = newValues } else { copyValues(r.Form, newValues) } } return err } 上面那段代码分析来看主要是用在POST与PUT方法的值的获取。而且还是通过url链来查询url中所传递过来的值。而对于你所上传的文件并不是通过URL连来传输数据到server端。所以肯定是不能够解析到;这种方法的最大数据包大小为:10MB 而你所设置的multipart/form-data是二进制文件流的传输。所以你所获取的方法肯定也不能是值的获取的形式。 net/http包中,提供了multipartReader()方法来获取二进制流文件: func (r *Request) MultipartReader() (*multipart.Reader, error) { if r.MultipartForm == multipartByReader { return nil, errors.New("http: MultipartReader called twice") } if r.MultipartForm != nil { return nil, errors.New("http: multipart handled by ParseMultipartForm") } r.MultipartForm = multipartByReader return r.multipartReader() } 上面的代码中调用r.MultipartForm来解析上传文件表单。
  • new(type):new主要 用在各种类型的内容分配,如@jimmykuu 所说的new(T)是分配了一个零值填充的T类型的内存空间,并且返回其地址即:*T;type{T}是声明一个type类型的T。