我正在尝试使用sshfs从docker容器装载位于主机上的目录。我遇到的问题是,一旦golang应用程序完成执行,挂载点就会消失,而假设它会持续执行,手动执行的相同步骤会产生持续的结果
ssh客户端代码:
package main
import (
//"bytes"
"code.google.com/p/go.crypto/ssh"
//"fmt"
"io"
"log"
"os"
)
var (
server = "172.17.42.1:49155"
username = "root"
我正在学习“Go并发模式”
问题:
渠道如何从外部共享变量?在这种情况下,我被分享了。
点A和点B的变量似乎有某种特殊的关系?这是什么
这对你意味着什么
对于i:=0;i++
主要代码:
package main
import (
"fmt"
"math/rand"
"time"
)
func boring(msg string) <-chan string { // Returns receive-only channel of strings.
c
我正在尝试用golang编程一个身份验证系统
用户成功注册后,将向用户发送电子邮件确认
我正在考虑在goroutine中执行sendmail函数。发送邮件功能的代码如下所示
func Send(email, link string) error {
// Connect to the remote SMTP server.
c, err := smtp.Dial("127.0.0.1:2525")
if err != nil {
return err
当我构建Go二进制文件时,我通常会执行以下操作:
go build -ldflags "-X main.basedir somevar" -o mybuilddir/bin/myfile mypackage/main"
这将生成二进制文件并将其放置在自定义目录中。但这并没有将中间包文件保存在pkg/之下,这将加快下一次编译运行
解决方案是go install,但我无法指定输出目录。似乎可以使用GOBIN设置二进制目录,但我无法指定可执行文件的名称always main
这个问题的可能解决方案是
我最近开始学习Go,当我决定将代码放在多个文件main.Go中时,出现了一个问题。我经常需要的日志、缓存、配置、度量等常用内容在其他文件中都不可用,即使它们属于同一个主包。我想根据ConfigViper包中的数据配置一次日志实例logrus包。这只是开始,我很快就会有一个DB实例,缓存实例,等等
解决我的问题最好的方法是什么?最佳的围棋练习是什么?我怎样才能遵循干燥原则
如果我将初始日志设置放入mylog包中,然后将其导入每个包的每个文件中,那么会有多少mylog实例?每个文件/包一个/?效率高
我现在正在处理调用并启动一个systemd服务,我只是使用golang的D-BusAPI调用一个shell脚本
我在/usr/share/dbus-1/system services/org.freedesktop.hello.service中创建了一个D-Bus服务
[D-BUS Service]
Name=org.freedesktop.hello
Exec=/bin/false
User=root
SystemdService=hello.service
[Unit]
Descripti
我正在使用ajax将JSON和序列化格式的表单数据发送到golang服务器。我无法读取这些数据
我正在使用kataras/iris golang框架
下面是我的代码-
功能${
$.fn.serializeFormJSON=函数{
var o={};
var a=this.serializeArray;
$.eacha,函数{
如果o[此名称]{
if!o[this.name].push{
o[this.name]=[o[this.name]];
}
o[this.name].pushthis
我正在尝试获取八进制表示的文件权限位。
下面的代码将其打印为字符串。有八进制打印的API吗
还是int
比如说,
package main
import (
"fmt"
"os"
"strconv"
)
func main() {
fi, err := os.Stat("test.go")
if err != nil {
fmt.Fprintln(os.Stderr, err)
return
}
perm
在下面的示例中,我使用json_extract。。。在Golang中使用go-sqlite3驱动程序
包干管
进口
_github.com/mattn/go-sqlite3
github.com/jinchu/gorm
_github.com/jinchu/gorm/dialogons/sqlite
fmt
编码/json
net/http
func main{
var db*gorm.db
类型会话结构{
戈姆模型
SessionID字符串`json:session\u id`
选项字符串`j
我遇到一些整数溢出错误。
我使用golang和go micro作为微服务框架构建了一个微服务应用程序。
我使用NAT作为消息代理
我的微服务有效载荷的格式为
map[string]interface{}
当我发布包含uint64的有效负载时,会出现问题,例如
var id uint64 = 512281913614499841
message := map[string]inteface{}
message["id"] = id
这是由cockroachdb生成的唯一ID,当订阅者
我正在从文本文件传递URL列表。命令如下
cat urls.txt | ./mygofile
如果看到断开的url,它将停止。如何在不退出程序的情况下使其继续?我希望它显示一个简单的错误,并继续到下一个URL而不退出
http://beap.adss.yahoo.com/
http://id.answers.yahoo.com/search
https://brokenurl
http://id.answers.yahoo.com/KnowledgeSearchService
http://i
我已经阅读了移动fmt软件包。不过,我不明白Print、Fprint、Sprint、Printf、Fprintf和Sprintf之间的区别。有人能用外行的语言给我解释一下吗?这里是惯例:
如果名称以Print开头,则写入标准输出
如果名称以Fprint开头,它将写入io.Writer,可能写入文件,因此“f”
如果名称以Sprint开头,它将写入一个字符串并返回该字符串
如果名称以f结尾,则它是一个格式化打印,也就是说,它获取一个类似%s%d的格式参数,并基于该参数格式化输出。
如果名称以ln结
为什么这段代码要运行两次外部for循环
这是我的密码:
package main
import "fmt"
func main() {
loops := 1
for loops > 0 {
fmt.Printf("\nNo of loops\n")
fmt.Scanf("%d", &loops)
for i := 0; i < loops; i++
我正在尝试从Ip地址获取主机名,但我始终收到以下错误:
err couln't get hostnames,err lookup 220.220.103.65.in-addr.arpa.: no such host,ip 65.103.220.220
守则:
var hostname string
hostnames, err := net.LookupAddr(c.ip)
if err != nil {
glog.Errorf("err couln't get hostnames,e
给定一个接口,如何获取指向基础值的指针
我天真的尝试是使用如下类型断言:
var mytypeptr *MyType = myinterface.(*MyType)
但我得到:
interface conversion: MyInterface is MyType, not *MyType
您可以从以下内容开始:
有没有一种方法可以在不使用反射的情况下修改接口后面的结构字段?@erjoalgo考虑接口的结构方式请参见,否:在运行时,接口会屏蔽底层值。接口是静态类型的,我想你应该把*MyTyp
我正试图通过运行此命令来安装Go包()
go get -u github.com/jteeuwen/go-bindata/...
我得到这个错误:
package github.com/jteeuwen/go-bindata/...: cannot download, $GOPATH not set. For more details see: go help gopath
我的GOPATH是以普通方式设置的。我知道这是由-u命令引起的。。。如何解决此问题?这取决于您的操作系统,但请确保在.
我试图给一个字段赋值,但我的程序由于运行时错误而陷入恐慌:无效的内存地址或零指针解引用
这是合理的,因为变量为零。
但我发现一些Go内部结构是允许这样做的,例如bytes.Buffer
这是“bytes.Buffer”源代码
func (b *Buffer) Write(p []byte) (n int, err error) {
b.lastRead = opInvalid
m := b.grow(len(p))
return copy(b.buf[m:], p), n
我想在init函数中执行这两行中的一行
func init() {
log.SetPrefix(">>>>>>>>>>>>> ")
log.SetOutput(ioutil.Discard)
}
如何在make文件中实现类似于C和宏定义的东西?
我像GoBuildMy_项目一样构建go程序,并且没有任何定制文件。我可以传递到build命令标志并读取内部代码吗?创建一个可以测试的字符串变量。然后
我正在考虑使用指针,通过值或引用将变量作为参数传递给函数。在一本书中,我遇到了一个很好的例子,这是下面关于传递指针的第一个代码片段
第一个版本按预期工作,在函数中,接受指针的参数对变量本身进行更改,而不是对其副本进行更改。但是下面的第二个例子我正在修改它的副本。我认为它们的行为应该是等价的,第二个应该处理作为参数传递的变量,而不是它的副本
本质上,函数的这两个版本的行为有什么不同
,通过引用传递参数:
package main
import (
"fmt"
)
// simple fu
我正在尝试分析我用go编写的http处理程序。它在每个http请求中从S3下载一个图像,调整它的大小/裁剪它,并作为响应写入它
我遵循了这一点,并尝试使用easy方法和hard方法分析我的代码。现在,当我使用代码中提到的以下行时
defer profile.Start(profile.CPUProfile).Stop()
它不会在/tmp/profie[some number]/cpu.pprof文件中写入任何内容
此外,当我在serveHTTP中使用defer profile.Startp
我正在寻找编写Go代码时的最佳实践。我有两种方法,它们在逻辑上非常接近。我只是想更好地编写代码,是否有一种方法可以将AddAuthor和AddTitle方法与Go结合在一起
我在想一些类似于func t*Test SetPropertyname,alfa。。这是一种方法,但不知道如何改进代码。欢迎提出任何意见。另外,如果你给我一个关于风格和实践方面的好的Go代码链接,我会很高兴
谢谢
type Test struct {
有人能解释一下这里发生了什么吗
package main
import (
"fmt"
"net/http"
"strings"
)
func Verify(req http.Request) string {
return req.FormValue("g-recaptcha-response")
}
func main() {
req, _ := http.NewRequest("POST", "http://www.google.com/sea
我有一个接受连接的Go TCP服务器,我想一次回显一个字节的消息,我看不到让net.Conn使用net.Conn.Write发送一个字节的方法
c、 写入[]字节
无法将b类型字节转换为[]类型字节
c、 写
无法将b类型字节用作c.Write的参数中的类型[]字节
io.Writer始终接受[]字节作为参数。使用1字节长的字节片。您尝试的[]byteb是将单个字节转换为字节片。相反,创建一个单元素字节片,其中b是唯一的元素:
n, err := c.Write([]byte{b})
使用b
我的本地程序现在做的是连接到websocket,并在收到消息时用json更新本地文件
有没有办法在线运行golang程序,然后将该文件更新并保存为json文件,这样我就可以在线查看?我不确定,但我想我需要一个网络服务器
例如,程序会生成这样的网站?通常大多数网站会将JSON响应直接生成到HTTP请求中,而不会将结果写入通过HTTP提供服务的文件中
无论哪种方式,您都需要某种暴露于Internet的服务器。我建议您阅读有关如何使用Go内置的HTTP服务器的内容,这样您就不需要将结果写入文件:。一旦
我正在尝试使用Golang或至少几个生成包含在有向图中的所有循环。
我目前有两个结构:
Node : { ID (string), resolved (bool), edges ([]Edge) }
Edge : { ID (string), start (Node), end (Node), weight (Float64)}
目前,循环重量不是问题。
我已经找到了一些关于如何检测周期,或找到最短路径等的答案,但我没有找到一个算法可以对我有很大帮助。
我该怎么办?欢迎提出任何建议。问
参考示例,我想在作业初始化和终止之间添加预定义的延迟。我已经在地图中存储了数据,即jobid和waittime。然后,我将整个贴图复制到与map相同结构类型的通道中。但我无法在go例程调用中获取map值。请帮帮我,我是新手
package main
import "fmt"
type Vertex struct {
id, waitime int
}
var m = map[int]Vertex{
1: {1, 1000},
2: {2, 2000},
3: {3, 1000},
4
标签: Go
Tcp
unsafe-pointers
我有不同类型的切片,我需要用TCP发送它们。我的切片长度很大,不是一个常量值。是否有任何方法可以将切片转换为[]字节,而无需在单个元素之间循环?例如,假设mySlice元素在这里是4个字节,我想要这样的东西:
byteSlice := (*[4 * len(mySlice)]byte)(unsafe.Pointer(&mySlice[0]))
但它不起作用,因为4*lenmySlice不是常数
谢谢。在示例代码中,您创建的是数组,而不是切片,因此出现了错误。要创建特定长度的切片,请使用
我正在使用以下代码
package main
import (
"fmt"
)
type traingle interface {
area() int
}
type details struct {
height int
base int
}
func (a details) area() int {
s := a.height + a.base
fmt.Println("the area is", s)
return s
}
func main() {
r := detai
Golang Bufio writer.Flush在大缓冲区大小时不写入小数据示例4096标准大小*2
package main
import (
"log"
"os"
"bufio"
)
func main() {
file, err := os.Create("test")
defer file.Close()
w := bufio.NewWriter(file)
w = bufio.NewWriterSize(
w,
我想使用字符串作为查询的一部分
func GetAll(id int) {
var queryPart string
if id != 0 {
queryPart = fmt.Sprintf("WHERE id = %d", id)
} else {
queryPart = ""
}
database.DB.Query("SELECT name FROM table ?, queryPart)
}
在database.DB中,我有*DB.Sql实例
如何
为什么当我使用var tf intf=&t1时,它是正确的
但是当我使用var tf intf=&t1时,它是不正确的
这两种表述有什么不同吗
当我使用var-tf-intf=&t1时,它是正确的,但当我使用var-tf-intf=&t1时,它不是
因为在您的示例中,您使用的是tf intf=t1,并且它没有编译,所以我认为您的意思可能是:
当我使用var-tf-intf=&t1时,它是正确的,但当我使用var-tf-intf=t1时,它不是
所以这里的问题是为什么&T{t1}指针满足接口int
我有一种在ElasticSearch中索引的文档类型,其结构简化如下:
{
id: "54"
properties: ["nice", "green", "small", "dry"]
}
现在,我想选择该索引中的所有文档,在属性字段中不包含给定值的列表
类似于:SELECT*从属性不包含[“红色”、“大”、“恐怖”的索引中选择]
如何在elasticsearch上实现该功能?
(我有人知道如何在Golang上实现这样的查询,我会更好:-)
谢谢 您可以使用子句bool从索引中
我很困惑,下面的片段是否完美
import "sync"
import "sync/atomic"
var initialized uint32
var instance *singleton
var instance *singleton
var once sync.Once
func GetInstance() *singleton {
once.Do(func() {
instance = &singleton{}
})
return
我正试图用Name参数筛选我的寄存器
我将此处理程序设置为函数:
func GetFuncionaries(w http.ResponseWriter, r *http.Request) {
var f model.Funcionary
var t util.App
var d db.DB
err := d.Connection()
db := d.DB
defer db.Close()
Id, _ := strconv.Atoi(r.F
我用这个库创建了一个小型Go应用程序
我创建了一个新标志,-t或-token,当我传递这个参数时,我希望应用程序打印它
这就是我所做的:
func init() {
fmt.Println("[*] Inside init()")
var token string
rootCmd.PersistentFlags().StringVarP(&token, "token", "t", "", "Service account Token (JWT) to insert
并发编程新手
我有一个疑问,为什么goroutines的执行流程在这里有点奇怪
golang中goroutines和Channel内容的初学者
func main() {
// Set up the pipeline.
c := gen(2, 3)
out := sq(c)
// Consume the output.
fmt.Println(<-out) // 4
fmt.Println(<-out) // 9
}
func sq
我有以下代码:
type routeVerifier struct {
route *[]Route
}
func (r *routeVerifier) checkUriDuplication(comparer *[]Route, uri string) error {
for _, e := range *comparer {
if e.Uri == uri {
msg := fmt.Sprintf("The uri %s alr
我正在使用这个项目。当我克隆到/tmp/中时,如果我运行:
go list-m all
我得到了所有依赖项的列表。如果同一个项目在我的
$GOPATH/src/github.com/stts/beerdb,然后运行我得到的相同命令:
go list-m:不使用模块
如果在这两种情况下,我都处在go.mod和go.sum存在的路径上,为什么会出现不同的行为?我的go版本是go1.12go 1.12仅对模块提供初步支持(在go 1.11中介绍)。GOPATH是默认模式,但当GO111MODULEen
如何将大型结构的常量指针传递给函数或go通道。
本询问的目的是:
避免函数意外修改指针
在传递到时避免复制struct对象
功能/频道
这个功能在C++、C、java中很常见,但是我们如何在Galang'中实现同样的功能?p>
================更新2===================
谢谢你@zarkams、@mkopriva和@peterSO
编译器优化导致byValue和byPointer的结果相同。
通过添加
data.array[0]=reversedata.arra
基本上,我想遍历一个字符串,获取每个字符,并对该字符进行处理。但是,当我尝试循环遍历字符串时,我必须为字符的索引提供一个变量,为字符本身提供一个变量,即为pos,char:=range myString{*do something*}。如何简单地分配字符本身而不必分配索引?for循环的范围形式在切片或映射上迭代
在切片上进行测距时,每次迭代返回两个值:
第一个是切片的索引;
第二个是该索引处元素的副本。
假设我们有一个函数来验证一个数是否为素数,并且我们有一个包含候选数的数组,那么我们可以用两种
我正在尝试使用Go解析JSON。有人能告诉我为什么我的代码没有按预期工作吗
package main
import (
"encoding/json"
"fmt"
)
type Message struct {
Name string
Body string
Time int64
}
type Person struct {
M Message
}
func get_content() {
以这两个片段为例
使用父范围中的out chan
将chan作为结束的正式论据传递出去
我知道向闭包传递参数会创建闭包的一个副本,并且使用父作用域中的某些内容会使用引用,所以我想知道在按副本传递的情况下,这在内部是如何工作的。是否有两个通道,一个在父作用域中,另一个副本传递给闭包,当闭包中的副本写入时,该值的副本也在父作用域中的通道中生成?因为我们正在将父作用域中的out chan返回给调用者,并且值将仅从该通道使用。chan是一种引用类型,就像切片或映射一样。go中的所有内容都是按值传
我使用代码的方式是从一个文件中传递一个url列表,并用我的代码运行每个url,代码使用bufio,因此我可以通过管道从文件中传递url
命令:cat test2.txt |/mygofile
https://beap.adss.yahoo.com/
https://id.answers.yahoo.com/search
https://brokenurl
https://id.answers.yahoo.com/KnowledgeSearchService
https://id.answers.
在bee中,如果我使用模块,而GOPATH旧方法工作得很好,那么路由对我来说根本不起作用。
我是刚来戈兰的,如果我做错了,请纠正我。
我一直试图用bee创建API项目,但我发现所有新项目都必须使用GO1.11中发布的模块方法。
我使用beeapi name命令构建新项目。它出现在GOPATH中。我把它从GOPATH移到了另一个目录。然后我做了mod init mod,然后我能够运行bee run,API成功启动,但路由不起作用。我做了一些比较,发现commentsRouter文件没有生成。
我做
我是golang编程新手,正在学习go中的接口
谷歌搜索时,我在阿丹实验室偶然发现了这一点。清单5中有下面的代码片段。完整的代码正在运行中
在新方法中,return语句返回类型为errorString的结构,但函数声明指出该类型应为error。上面的代码不会抛出任何错误。它编译并运行良好
func New(text string) errorString {
return errorString{text}
}
当我改变了方法如下仍然工作良好
func New(text string)
如何在Go中刷新tcp套接字
我通过一个套接字一次发送一条消息,指示客户端的进度,但是这些消息会聚集在一起并同时发送。我在任何地方都看不到刷新功能
消息相隔几秒钟发送,正如@JimB提到的,它们是的,你不能刷新net.Conn,因此如果你的数据流是断断续续的,它会被缓冲到其他地方
如果您(或数据流中的中间包)正在使用例如bufio:
虽然不能刷新conn,但bufio.Writer可以
但是,如果您的连接是以纯io.Writer类型提供给您的,即仅限Write方法-无刷新,则您可以尝试运行时转换
我不知道如何在另一个文件中使用函数
我的项目架构:
.
├── main.go
└── src
└── function.go
1 directory, 2 files
梅因,加油
package main
import "src/funcrion"
func main() {
funcrion.Display();
}
函数
package src
import "fmt";
func Display() {
fmt
从Go中的Json解析ClusterRole对象中的元数据时出现问题
我举了一个例子:
包干管
进口
编码/json
fmt
k8s.io/kubernetes/pkg/api/rbac
func main{
clusterDemo:=rbac.ClusterRole{}
ClusterRoleSaw:=`{
apiVersion:rbac.authorization.k8s.io/v1,
种类:ClusterRole,
元数据:{
creationTimestamp:2021-01-21T08
在3个代码段中,其中一个在本地范围内声明了通道,另一个代码段会出现死锁问题,前面的一个代码段说,尽量避免在全局范围内声明通道。我查了一下,但没有找到任何解释
尽管我没有阻止通道发送和接收,但为什么全局作用域通道出现错误?为什么我会遇到僵局问题
除了范围和初始化之外,makechan int与var myChan int有何不同
有人能解释并建议更好的文章/文档/链接/PDF,以便有效地使用通道并在Go中实现并发性吗
为简洁起见,代码段中省略了导入和“package main”
// 1. cha
我试图使用包含属性键的变量访问结构属性
例如,我得到了这个结构:
type person struct {
name string
age int
}
我有一个变量属性,它包含一个字符串值
我想进入一个像人的年龄。财产
您认为在golang中可能吗?如果您正在寻找类似于Python或JavaScript中的person[property]的东西,答案是否定的,golang不支持运行时的动态字段/方法选择
但您可以通过反射来实现:
这是可能的,但一个非常不寻常的要求。如果你告诉
上一页 1 2 3 4 5 6 ...
下一页 最后一页 共 644 页