小编the*_*tem的帖子

如何在从文件中读取时查找EOF

我使用以下代码在Go中读取文件:

spoon , err := ioutil.ReadFile(os.Args[1])
if err!=nil {
        panic ("File reading error")
}
Run Code Online (Sandbox Code Playgroud)

现在我检查我选择的每个字节是什么字符.例如:

spoon[i]==' ' //for checking space
Run Code Online (Sandbox Code Playgroud)

同样我读了整个文件(我知道可能还有其他方法可以阅读)但保持这种方式完好无损,我怎么知道我已达到文件的EOF而我应该再停止阅读?

请不要建议找到长度spoon并开始循环.我想要找到EOF的确定镜头方式.

file-handling go

17
推荐指数
4
解决办法
3万
查看次数

功能签名没有功能体

在查看math.Ceil方法的源代码时,我发现了这种语法,其中有一个没有正文的导出函数签名,以及包含该实现的相同签名的非导出版本:

// Ceil returns the least integer value greater than or equal to x.
//
// Special cases are:
//  Ceil(±0) = ±0
//  Ceil(±Inf) = ±Inf
//  Ceil(NaN) = NaN
func Ceil(x float64) float64

func ceil(x float64) float64 {
    return -Floor(-x)
}
Run Code Online (Sandbox Code Playgroud)

我假设这是一些允许您轻松导出本地函数的语法.那是对的吗?为什么要这样做而不是只有一个导出的函数并在包中使用它?

go

14
推荐指数
1
解决办法
1052
查看次数

去:我创造了太多的价值观吗?

如果我有这样的结构

type myStruct struct {
    mystring string
    myint int
}
Run Code Online (Sandbox Code Playgroud)

如果我有一个函数返回一个像这样的新myStruct

func New() myStruct {
    s := myStruct{}

    s.mystring = "string"
    s.myint = 1

    return s
}
Run Code Online (Sandbox Code Playgroud)

因为我在返回它之前首先将它存储在"s"变量中,我的函数实际上是在制作2个myStruct值而不是一个吗?

如果是这样,那么确保我不首先将其存储在变量中是一种更好的做法吗?

go

12
推荐指数
1
解决办法
276
查看次数

如何从http.ResponseWriter获取当前响应长度

鉴于http.ResponseWriter已经完成了一些.Write()操作,可以直接获得当前累积的响应长度吗?

我很确定这可以通过Hijack转换完成,但我想知道它是否可以直接完成.

go

7
推荐指数
1
解决办法
1675
查看次数

是否有必要将模板放入地图以便在Go中重复使用?

要处理Web应用程序中的每个请求,有关模板的常规代码如下所示:

t:= template.New("welcome")
t, _ = t.ParseFiles("welcome.tpl")
t.Execute(w, data)
Run Code Online (Sandbox Code Playgroud)

我想ParseFiles每次都要花很多钱.是否可以重用模板?所以我改进了这样:

//templateMap := make(map[string][template])
//...
tplName :="welcome"
t := templateMap[tplName]
if t=nil{
    t:= template.New(tplName )
    t, _ = t.ParseFiles("welcome.tpl")
    templateMap[tplName] = t
}

t.Execute(w, data)
Run Code Online (Sandbox Code Playgroud)

我想通过将模板放入地图或缓存来提高效率是可行的还是可行的?我也想知道函数 Execute是否是线程安全的?

func (t *Template) Execute(wr io.Writer, data interface{}) (err error)

go

7
推荐指数
1
解决办法
316
查看次数

切片后释放字符串以进行垃圾收集的正确方法

根据这篇Go Data Structures文章,在Strings部分下,它指出采用一个字符串片段会将原始字符串保留在内存中.

"(另外,在Java和其他语言中有一个众所周知的问题,当你切割一个字符串来保存一小块时,对原始文件的引用会将整个原始字符串保留在内存中,即使只有少量仍然存在Go也有这个问题.我们尝试和拒绝的替代方案是使字符串切片如此昂贵 - 分配和副本 - 大多数程序都避免使用它.)"

所以如果我们有一个很长的字符串:

s := "Some very long string..."
Run Code Online (Sandbox Code Playgroud)

我们采取一小部分:

newS := s[5:9]
Run Code Online (Sandbox Code Playgroud)

s我们发布之前,原件不会发布newS.考虑到这一点,如果我们需要newS长期保留,但是s为垃圾收集发布,采取什么方法?

我想也许这个:

newS := string([]byte(s[5:9]))
Run Code Online (Sandbox Code Playgroud)

但我不确定这是否真的有用,或者是否有更好的方法.

string garbage-collection go slice

4
推荐指数
1
解决办法
488
查看次数

什么是JSFiddle用于调整4个代码内容区域的大小?

这个问题是关于jsFiddle本身的; 特别是区域如何调整大小.

jsFiddle使用4个可独立调整大小的区域,它们之间有边框,边框中有此图形:

边框调整大小句柄

这些调整大小句柄会导致iframe在需要时滚动; 它的光滑.我已经搜索了jQueryUI Resizable思想就是这样.不...

我真的只知道jQueryUI.这是一个不同的库,他们正在使用它来解决这个问题吗?你能识别和/或链接我用于调整大小的内容吗?

javascript jsfiddle

4
推荐指数
1
解决办法
1509
查看次数

从数组内容中设置div id

我试图弄清楚如何给16个不同的div提供存储在16个元素长数组中的id名称.

这样我就可以将div的"位置"随机化为记忆游戏,因为如果可能的话,将会有8种不同的div样式与div id一起变化.

我的计划是为div id设置与该特定div的样式相同的名称.

有没有办法将第一个div的id和样式设置为myarray [0]中的值,将第二个div的id和样式设置为myarray [1],依此类推?

编辑:

var card = ["orange","orange","pink","pink","red","red","purple","purple",
"blue","blue","green","green","brown","brown","yellow","yellow"];

for(var j, x, i = card.length; i; j = parseInt(Math.random() * i),
x = card[--i], card[i] = card[j], card[j] = x);
Run Code Online (Sandbox Code Playgroud)

然后在身体我试图实现代表这一点的东西:

<div id="card[0]"></div>
<div id="card[1]"></div>
<div id="card[2]"></div>
Run Code Online (Sandbox Code Playgroud)

等等...

html javascript arrays jquery styles

3
推荐指数
1
解决办法
2万
查看次数

为什么使用make()在Go中创建切片?

  • var a [4]int和之间有什么区别b := make([]int, 4)?在b可扩展,但不是a吧?但是,如果我知道我真的需要4个元素,那么一个数组比一个切片更快吗?

  • 有没有之间的性能差异var d []inte := make([]int)?是否会f := make([]int, 5)提供比没有第一个即5个元素的长度更多的性能?

  • c := make([]int, 5, 10)不会分配比我可以访问更多的内存吗?

go

1
推荐指数
1
解决办法
882
查看次数