栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

默认情况下,哪些对象在Go中完成了,它有哪些陷阱?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

默认情况下,哪些对象在Go中完成了,它有哪些陷阱?

默认情况下,完成以下对象:

  • os。File:当对象被垃圾回收时,文件自动关闭。

  • os。流程:完成将释放与流程相关的任何资源。在Unix上,这是空操作。在Windows上,它关闭与进程关联的句柄。

  • 在Windows上,程序包似乎

    [net](http://golang.org/pkg/net/)
    可以自动关闭网络连接。

除了上述对象之外,Go标准库未在对象类型上设置终结器。

似乎只有一个潜在的问题可能会在实际程序中引起问题:当an

os.File
完成时,它将调用OS以关闭文件描述符。如果
os.File
已经通过调用函数创建,
os.NewFile(fd int, namestring) *File
并且另一个(不同的)文件描述符也被使用
os.File
,则垃圾回收 其中 一个文件对象将使另一个文件对象不可用。例如:

package mainimport (    "fmt"    "os"    "runtime")func open() {    os.NewFile(1, "stdout")}func main() {    open()    // Force finalization of unreachable objects    _ = make([]byte, 1e7)    runtime.GC()    _, err := fmt.Println("some text") // Print something via os.Stdout    if err != nil {        fmt.Fprintln(os.Stderr, "could not print the text")    }}

印刷品:

could not print the text


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/495496.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号