小编Kos*_*sie的帖子

Golang:在哪里调用接口方法?

我不明白在哪一点上调用了Interface方法.我正在看Go Go中的以下示例:

package main

import "fmt"

type Person struct {
    Name string
    Age  int
}

func (p Person) String() string {
    return fmt.Sprintf("%v (%v years)", p.Name, p.Age)
}

func main() {
    a := Person{"Arthur Dent", 42}
    z := Person{"Zaphod Beeblebrox", 9001}
    fmt.Println(a, z)
}
Run Code Online (Sandbox Code Playgroud)

问题:

我明白func (p Person)接收String()方法并返回string我要显示的方法.但fmt.Printlnmain()方法调用String()在某些时候,对不对?

我看了一下源fmtgodoc,但我仍然无法看着办吧!

另一个例子:

如果我添加自己的界面,让我们说Stringer2一个被调用的方法String2(),然后创建一个func (p Person) String2() {....}.如何String() …

go

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

Docker:容器与本地安装

在周末第一次玩Docker并看到来自irssi,mutt,浏览器等的所有内容的微小图像后,我想知道本地安装的软件包是否正在为数十个容器取代?

我可以看到保持基本系统非常干净的好处,并且所有这些容器都是独立的,并且可以轻松地重新定位到不同的桌面,甚至是Windows.每个运行一个像阿尔卑斯山的小型发行版,与应用程序,如irssi等....

这是事情的发展方向还是我错过了这里的船?

docker

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

Golang:同时处理5个巨大的文件

我目前在Perl中处理了5个巨大的(每个400万行)日志文件,我想我可能会尝试在Go及其并发功能中实现相同的功能.因此,在Go中缺乏经验,我在考虑如下所示.任何关于该方法的评论将不胜感激.一些粗糙的伪代码:

var wg1 sync.WaitGroup
var wg2 sync.WaitGroup

func processRow (r Row) {
    wg2.Add(1)
    defer wg2.Done()
    res = <process r>
    return res
}

func processFile(f File) {
    wg1.Add(1)
    open(newfile File)
    defer wg1.Done()
    line = <row from f>
    result = go processRow(line)
    newFile.Println(result) // Write new processed line to newFile
    wg2.Wait()
    newFile.Close()

}

func main() {

    for each f logfile {
        go processFile(f)
    }
    wg1.Wait()
}
Run Code Online (Sandbox Code Playgroud)

所以,想法是我同时处理这5个文件,然后每个文件的所有行也将同时处理.

那会有用吗?

go

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

标签 统计

go ×2

docker ×1