beginner question about valyala/fasthttp warning me to copy not reference a returned value

blov · · 475 次点击    
这是一个分享于 的资源,其中的信息可能已经有所发展或是发生改变。
<p>Hi gophers,</p> <p>The documentation for some of the fasthttp functions, such as <a href="https://godoc.org/github.com/valyala/fasthttp#RequestHeader.Peek" rel="nofollow">https://godoc.org/github.com/valyala/fasthttp#RequestHeader.Peek</a> states something like:</p> <pre><code>func (h *RequestHeader) Peek(key string) []byte </code></pre> <blockquote> <p>Peek returns header value for the given key.</p> <p>Returned value is valid until the next call to RequestHeader. Do not store references to returned value. Make copies instead.</p> </blockquote> <p>I just don&#39;t quite grok why this warning exists - surely the []byte array returned by this function is passed by value, not by reference?</p> <hr/>**评论:**<br/><br/>Deathknife: <pre><p>[]byte is a slice rather than an array. As a slice, it acts as a &#34;pointer&#34;.</p> <p><a href="https://blog.golang.org/go-slices-usage-and-internals" rel="nofollow">https://blog.golang.org/go-slices-usage-and-internals</a></p></pre>natbobc: <pre><p>They avoid GC by using memory pools and that&#39;s the guarantee they provide. As @Deathknife mentioned the underlying data/array isn&#39;t a mem copy, only the &#34;shell&#34; which basically includes the len, capacity, and a pointer to the array.</p></pre>Badu_Ro: <pre><p>Look at the noCopy struct <a href="https://github.com/valyala/fasthttp/blob/master/nocopy.go#L7:6" rel="nofollow">https://github.com/valyala/fasthttp/blob/master/nocopy.go#L7:6</a> which points to <a href="https://github.com/golang/go/issues/8005#issuecomment-190753527" rel="nofollow">https://github.com/golang/go/issues/8005#issuecomment-190753527</a> By the way, that is not a beginner question.</p></pre>

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

475 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传