小编Ric*_*777的帖子

在 Go 中格式化详细日期

我想以人类可读的格式生成格式化日期。通常在英语语言环境中,后缀用于一个月中的第 1 天、第 2 天、第 3 天、第 4 天、第 5 天等。

我尝试使用格式字符串"Monday 2nd January"来格式化这些日期,但它似乎不起作用。

例如在操场上

import (
    "fmt"
    "time"
)

const format = "Monday 2nd January"

func main() {
    t1 := time.Date(2015, 3, 4, 1, 1, 1, 1, time.UTC)
    fmt.Println(t1.Format(format))

    t2 := time.Date(2015, 3, 1, 1, 1, 1, 1, time.UTC)
    fmt.Println(t2.Format(format))
}
Run Code Online (Sandbox Code Playgroud)

这产生了结果

Wednesday 4nd March
Sunday 1nd March
Run Code Online (Sandbox Code Playgroud)

但我希望

Wednesday 4th March
Sunday 1st March
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

go

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

Go中的ORM/ORM-like lib

我正在使用包含大量表的传统Mysql数据库,并且正在使用ACL在某些权限控制下将其公开为REST api服务器.服务器将使用Go以获得更好的并发支持.

那么是否有一个Go ORM库支持检查遗留的MySQLDB并生成我可以开始的模型代码?

或者还有其他方法可以达到同样的目标吗?

mysql orm go

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

如何在Go中有效地处理大型数据阵列(超过10MiB)?

我正在处理从一台服务器下载文件并在操作将文件发送到另一台服务器后.

文件大小可以从1MB到200MB不等.

目前,我的代码非常简单,我使用的是http.Client和bytes.Buffer.
处理大文件(100MB到200MB)需要花费大量时间.

快速分析后,我发现大部分时间都是字节.(*Buffer).grow,
如何为16MB创建大缓冲区?

为了提高代码效率,我该怎么办?处理大型http请求的一般提示?

编辑

我将解释,正是我想要做的.我有couchdb文件(附件),我试图复制到另一个couchdb实例.couchdb文件大小可以从30MB到200MB,复制微小的(2-10MB)couchdb文件 - 真的很快.

但通过电线发送文件真的很慢.我目前正在尝试分析,并尝试使用@Evan回答来查看我的问题.

buffer go

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

获取单个实体的数据存储区查询?

Go 的Datastore API参考有一个GetAll函数,它返回一片实体.是不是只有一个方法只返回找到的第一个实体而不是列表?

google-app-engine go

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

在Go程序中默认启动了多少个goroutine?

package main

import (
    //"time"
    "runtime"
    "fmt"
)

func main() {
    //time.Sleep(100 * time.Millisecond)//By adding this number of goroutine increases
fmt.Println(runtime.NumGoroutine())
}
Run Code Online (Sandbox Code Playgroud)

我试图找出程序中的goroutines数量.我的代码在这里.编码时我注意到默认的goroutines数是4.

为了我:

  • 主要是一个goroutine
  • 垃圾收集器是一个goroutine

还有什么?

通过添加time.Sleep(上图),goroutines的数量增加到5.这是什么原因?

go goroutine

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

Go中更简洁的错误处理

如何在Go中处理很多错误?

我查看我的代码,发现它充满了错误处理程序:

err = result.Scan(&bot.BID, &bot.LANGUAGE, &bot.SOURCE)
if err != nil {
    log.Fatalf("result.Scan: %v", err)
    return
}

fileName, err := copySourceToTemporaryFile(bot)
if err != nil {
    log.Fatalf("copySourceToTemporaryFile: %v", err)
    return
}
...
Run Code Online (Sandbox Code Playgroud)

很多行看起来像:

// do something
// handle error
// handle error
// handle error

// do something 2
// handle error
// handle error
// handle error
Run Code Online (Sandbox Code Playgroud)

我可以创建一个默认处理程序来打印错误并停止处理,或者至少从我的代码逻辑中移出这个"错误处理程序 - 垃圾"吗?

error-handling exception-handling go

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

如何在Golang中读取和写入文件concurent?

我设置了一个网络服务器,我使用自己的包,在那里我做了一些写/读文件.当服务器获得tcp连接时,我启动一个不同的goroutine来处理每个连接的请求.在请求处理程序func中,我调用了func DoSomething()some_package.

这是web_server.go的代码:

 package main
 import (
    sp "./some_package"
    "log"
    "net"
    "os"
    "net/http"
   )

func main() {

  l, err := net.Listen("tcp", "0.0.0.0" + ":" + "4567")
  if err != nil {
    log.Println("Error listening:", err.Error())
    os.Exit(1)
  }
  defer l.Close()
  log.Println("Listening on 0.0.0.0:4567")  
  go func() {
    for {
        // Listen for an incoming connection.
        conn, err := l.Accept()
        if err != nil {
            log.Println("Error accepting: ", err.Error())
            os.Exit(1)
        }
        // Handle connections in a new goroutine.
        go handlerFunction(conn)
    }
  }() …
Run Code Online (Sandbox Code Playgroud)

webserver multithreading mutex go

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

如何创建在每个发行版上运行的静态Go二进制文件?

如何创建在每个Linux发行版上运行的静态Go应用程序?

仅仅按照以下方式静态编译Go就足够了:http://blog.hashbangbash.com/2014/04/linking-golang-statically/

linux go

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

有没有办法使用Go反射获取全名类型?

在Java中,可以通过Class.forName("com.my_pkg_name.MyClass")返回类类型来完成.

似乎Go反射只能找到Type by Value但不允许Name为Type.在实现与Go代码交互的脚本语言解释器时,此功能非常有用.

go

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

是否可以限制每秒运行多少个goroutine?

我有一个URL列表,我需要使用goroutine同时触发HTTP请求.无论如何都要检查并限制每秒发送多少HTTP请求?

http go

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