小编kos*_*tix的帖子

如何将文件附加到github问题?

我从Bitbucket到Github的项目迁移,我找不到将文件附加到问题的方法(例如:截图,规格等)

怎么做?

github

142
推荐指数
6
解决办法
4万
查看次数

迭代Go中结构的字段

基本上,迭代a字段值的唯一方法(我知道)struct是这样的:

type Example struct {
    a_number uint32
    a_string string
}

//...

r := &Example{(2 << 31) - 1, "...."}:
for _, d:= range []interface{}{ r.a_number, r.a_string, } {
  //do something with the d
}
Run Code Online (Sandbox Code Playgroud)

我想知道,如果有更好,更通用的实现方式[]interface{}{ r.a_number, r.a_string, },所以我不需要单独列出每个参数,或者,是否有更好的方法来循环结构?

我试图透过reflect包裹看,但是我碰了一堵墙,因为我不知道一旦取回就该做什么reflect.ValueOf(*r).Field(0).

谢谢!

go go-reflect

81
推荐指数
4
解决办法
9万
查看次数

如何计算Go地图中的项目?

如果我想计算地图结构中的项目,我应该使用什么语句?我试着用

for _, _ := range m {...}
Run Code Online (Sandbox Code Playgroud)

但似乎语法是错误的.

map go

76
推荐指数
2
解决办法
7万
查看次数

如何检查空切片?

我正在调用一个函数,如果没有值,则返回一个空数组.

当我这样做时,它不起作用:

if r == [] {
    fmt.Println("No return value")            
}
Run Code Online (Sandbox Code Playgroud)

我正在使用的工作是:

var a [0]int
if r == a {
    fmt.Println("No return value")            
}
Run Code Online (Sandbox Code Playgroud)

但是声明一个变量只是为了检查返回值似乎并不正确.有什么更好的方法呢?

go slice

51
推荐指数
3
解决办法
5万
查看次数

如何在Go中反转数组?

http://play.golang.org/p/W70J4GU7nA

  s := []int{5, 2, 6, 3, 1, 4}
  sort.Reverse(sort.IntSlice(s))
  fmt.Println(s)
  // 5, 2, 6, 3, 1, 4
Run Code Online (Sandbox Code Playgroud)

很难理解func Reverse(数据接口)接口的含义.

如何反转阵列?我不需要排序.

go

50
推荐指数
7
解决办法
5万
查看次数

如何正确使用构建标签?

我需要能够构建一个go应​​用程序的不同版本; 'debug'版本和普通版本.

这很容易做到; 我只是有一个const DEBUG,它控制着应用程序的行为,但是每次我需要在构建类型之间进行交换时都必须编辑配置文件.

我正在阅读关于go build(http://golang.org/pkg/go/build/)和标签,我想也许我可以这样做:

config.go:

// +build !debug
package build
const DEBUG = false
Run Code Online (Sandbox Code Playgroud)

config.debug.go:

// +build debug
package build
const DEBUG = true
Run Code Online (Sandbox Code Playgroud)

然后我应该能够使用"go build"或"go build -tags debug"进行构建,标签应该排除config.go并包含config.debug.go.

......但这不起作用.我明白了:

src/build/config.go:3:DEBUG在此块(<0>)中重新声明src/build/config.debug.go上的声明:3

我究竟做错了什么?

是否有其他更合适的#ifdef风格的方式我应该使用?

build go

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

如何不使用密码连接MySQL实例?

我尝试连接数据库,但我没有为数据库设置密码,我在密码字段中将其留空。但它没有连接并显示错误connector.go:95: could not use requested auth plugin 'mysql_native_password': this user requires mysql native password authentication.。另外,我使用 phpmyadmin 作为数据库,所以如何连接这里是我的代码

package main

import (
    "database/sql"
    "fmt"
    "log"
    "github.com/go-sql-driver/mysql"
)

var db *sql.DB

func main() {
    // Capture connection properties.
    cfg := mysql.Config{
        User:   "root",
        Passwd: "",
        Net:    "tcp",
        Addr:   "127.0.0.1:3306",
        DBName: "recordings",
    }
    // Get a database handle.
    var err error
    db, err = sql.Open("mysql", cfg.FormatDSN())
    if err != nil {
        log.Fatal(err)
    }

    pingErr := db.Ping()
    if pingErr != nil { …
Run Code Online (Sandbox Code Playgroud)

mysql authentication authorization go

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

如何使fmt.Scanln()读入整数切片

我有一行包含3个数字,我想从stdin用fmt.Scanln()读取,但这段代码不起作用:

X := make([]int, 3)
fmt.Scanln(X...)
fmt.Printf("%v\n", X)
Run Code Online (Sandbox Code Playgroud)

我收到此错误消息:

cannot use X (type []int) as type []interface {} in function argument
Run Code Online (Sandbox Code Playgroud)

我不明白.

go

10
推荐指数
2
解决办法
4695
查看次数

为什么Go不显示内存重新排序?

我正在阅读preshing的博客Memory Reordering Caught in the Act,并通过他的示例代码重现内存重新排序

然后我想知道我是否可以通过Go重现内存重新排序,所以我在go中编写了示例代码,但是在Go中没有显示内存重新排序.

我写信是为了分享一些调查结果.

你能帮忙解释为什么Go无法进行内存重新排序吗?谢谢.

Go中的示例代码:

 package main

    import (
            "fmt"
            "math/rand"
    )

    var x, y, r1, r2 int
    var detected = 0

    func randWait() {
            for rand.Intn(8) != 0 {
            }
    }

    func main() {
            beginSig1 := make(chan bool, 1)
            beginSig2 := make(chan bool, 1)
            endSig1 := make(chan bool, 1)
            endSig2 := make(chan bool, 1)
            go func() {
                    for {
                            <-beginSig1
                            randWait()
                            x = 1
                            r1 = y
                            endSig1 <- true …
Run Code Online (Sandbox Code Playgroud)

c++ memory concurrency go

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

数据库/ sql事务对象对于并发访问是否安全?

我需要执行多个SQL查询(select,update,delete兼)和回滚如果有够程出现了错误.因此问题是:DB 事务是否可以安全地进行并发访问?

go

10
推荐指数
2
解决办法
5963
查看次数