小编Him*_*shu的帖子

将文本文件读入字符串数组(并写入)

能够将文本文件读入(或写入)字符串数组的能力是我认为相当普遍的要求.当从最初需要访问数据库的语言开始时,它也非常有用.Golang中是否存在一个?
例如

func ReadLines(sFileName string, iMinLines int) ([]string, bool) {
Run Code Online (Sandbox Code Playgroud)

func WriteLines(saBuff[]string, sFilename string) (bool) { 
Run Code Online (Sandbox Code Playgroud)

我宁愿使用现有的而不是复制.

go

94
推荐指数
4
解决办法
11万
查看次数

git:更新被拒绝,因为遥控器包含您本地没有的工作

我正在与一些开发人员合作,在BitBucket上使用git.我们都在dev分支机构工作,而不是master直到发布.

其中一个开发人员提交了错误的代码,意外地覆盖了我自己的代码,现在我正在尝试将正确的代码推回到repo.我已经阅读了这个错误几天了,我不能再推送回购,因为我收到以下错误:

 ! [rejected]        master -> dev (fetch first)
error: failed to push some refs to 'https://myusername@bitbucket.org/repo_user/repo_name.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Run Code Online (Sandbox Code Playgroud)

我遵循说明 …

git version-control merge commit bitbucket

68
推荐指数
12
解决办法
14万
查看次数

按名称访问struct属性

这是一个不起作用的简单go程序:

package main
import "fmt"

type Vertex struct {
    X int
    Y int
}

func main() {
    v := Vertex{1, 2}
    fmt.Println(getProperty(&v, "X"))
}

func getProperty(v *Vertex, property string) (string) {
    return v[property]
}
Run Code Online (Sandbox Code Playgroud)

错误:

prog.go:18:无效操作:v [property](类型*Vertex的索引)

我想要的是使用其名称访问Vertex X属性.如果我这样做v.X,但v["X"]没有.

谁能告诉我如何使这项工作?

go go-reflect

59
推荐指数
3
解决办法
6万
查看次数

说明:不要通过共享内存进行通信; 通过沟通分享记忆

我想知道这个着名的引言最真实的解释是什么:

不要通过共享内存进行通信; 通过沟通分享记忆.(R. Pike)

Go Go Memory Model中,我可以读到:

通道上的发送在该通道的相应接收完成之前发生.(Golang Spec)

还有一篇专门的golang文章解释了这句话.而关键的贡献也是Andrew G.的一个实例.

好.有时太多谈论....我从Memory Spec报价中得出,并且通过查看工作示例:

在goroutine1通过通道向goroutine2发送(任何内容)后,goroutine1完成的所有更改(内存中的任何位置)必须在通过相同通道接收到goroutine2后才可见.(Golang Lemma by Me :)

因此,我得出了着名引言的脚踏实地的解释:

要同步两个goroutine之间的内存访问,您不需要通过通道发送该内存.足够好的是从频道接收(甚至没有).您将看到goroutine发送(到频道)时发送的任何更改(在任何地方).(当然,假设没有其他goroutine写入相同的内存.)更新(2)8-26-2017

我实际上有两个问题:

1)我的结论是否正确?

2)我的解释有帮助吗?

更新(1) 我假设没有缓冲的频道.让我们首先限制自己,避免用太多的未知数来改造自己.

请注意,我们还要关注两个goroutine的简单用法,这两个goroutines通过单个通道和相关的记忆效应进行通信而不是最佳实践 - 这超出了本问题的范围.

为了更好地理解我的问题的范围,假设goroutine可以访问任何类型的内存结构 - 不仅是原始的 - 并且它可以是一个大的,它可以是字符串,映射,数组,等等.

memory channel go goroutine

19
推荐指数
5
解决办法
5245
查看次数

复合文字使用无键字段

我正在为golang使用新的官方mongodb驱动程序。我创建了一个复杂的查询,将数据插入mongo db,然后根据元素值对其进行排序。我使用的过滤器中,我使用:-创建了bson类型

filter := bson.D{{"autorefid", "100"}}
Run Code Online (Sandbox Code Playgroud)

但它显示警告语:

原始E复合文字使用无键字段

警告在我的代码中造成混乱。

go mongodb

12
推荐指数
5
解决办法
7705
查看次数

PhpStorm Docker PHPUnit 数据库

  • 设置了PhpStorm: PHP, PHPUnit with Docker
  • 我在 PhpStorm/Database 查看器中看到架构
  • 我可以在我的应用程序中使用数据库:注册等。
  • 我可以在 PhpStorm 中运行 phpunit
  • 但是如果我想在测试中使用数据库,那么我会收到以下错误:

Illuminate\Database\QueryException : SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name does not resolve (SQL: select * from tablename)

测试在容器中工作但在 IDE 中失败。你有什么想法 PhpStorm 有什么问题吗?

mysql phpunit phpstorm laravel docker

8
推荐指数
2
解决办法
3064
查看次数

firebase .on("value") 和 .once("value") 之间的区别

在更新子 Firebase 时,会在".once"用于从 Firebase 获取值并在应用程序中添加新行时再运行一次。但是,当使用".on"代码更新子项时,但不能添加新子项,因为它从应用程序中删除了行,尽管它添加到了 firebase 但只有当我们刷新页面时,我们才能查看它。我的问题是在添加或更新后如何从 firebase 获取新数据。

firebase-realtime-database

7
推荐指数
0
解决办法
5593
查看次数

如何有效地更新两个struct的值

我有以下代码解析YAML文件,需要匹配一个结构的值external并更新internal结构的type属性.

例如,这是yaml文件(为简单起见翻译为bin)和正确解析的内容

package main

import (
    "fmt"
    "gopkg.in/yaml.v2"
    "log"
)

//internal config model for parsing

type InternalModel struct {
    models []Model2 `yaml:"models"`
}

type Model2 struct {
    Name   string `yaml:"name"`
    Type   string `yaml:"type"`
    Target string `yaml:"target"`
}

var internal_config = []byte(`
 models:
   - name: myapp
     type: app1
     target: ./

   - name: myapp2
     type: app2
     target: ./
`)

type ExternalConfig struct {
    Landscape Zone `yaml:"Landscape"`
}

type Zone struct {
    Zone   string  `yaml:"zone"`
    Models []Model …
Run Code Online (Sandbox Code Playgroud)

recursion struct yaml loops go

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

golang 将 12 小时格式时间转换为 24 小时格式时间

在 golang 中,我还没有找到将 12 小时格式字符串时间转换为 24 小时格式的任何方法,如下所示:

07:05:45PM to 19:05:45
Run Code Online (Sandbox Code Playgroud)

我在下面尝试过使用布局

layout := "Mon Jan 2 15:04:05 -0700 MST 2006"
/*
 * Write your code here.
 */
//layout := "3:04PM"
t,_ := time.Parse(layout,s)
fmt.Println(t)
Run Code Online (Sandbox Code Playgroud)

输出是:

07:05:45PM
Run Code Online (Sandbox Code Playgroud)

我一直在寻找与此类似的答案,但这并不能帮助每个人都使用整个布局。我找到了另一种语言的答案,但没有找到。

go

6
推荐指数
2
解决办法
7041
查看次数

Golang:不安全的动态字节数组

我正在尝试使用Go与Windows dll连接.我想要使​​用的DLL函数接受一个指向字节数组的指针.因此我需要给它那个字节数组.

我使用的系统调用 libary调用DLL,这表现在这里.我的基本要求是:

  • 我得到了字节数组所需的大小
  • 我创建了字节数组
  • 我必须得到一个指向字节数组的指针
  • 然后我将指针传递给Windows dll

我无法弄清楚如何在go中创建一个字节数组,并获得指向它的指针.这显然是一个不安全的操作,不安全的库可能会有所帮助,但我需要首先创建一个动态长度的字节数组.使用"make"创建切片对我没有帮助,除非我可以获得指向切片的支持数组的指针.

有没有其他人遇到这个或有任何想法?

arrays dll pointers go

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