小编was*_*mup的帖子

如何检查地图中是否包含密钥?

我知道我可以迭代一张地图m,

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

并寻找一个键,但有一种更有效的方法来测试一个键在地图中的存在吗?

我在语言规范中找不到答案.

dictionary go go-map

666
推荐指数
10
解决办法
46万
查看次数

如何在Ubuntu上设置GOPATH环境变量?我必须编辑哪个文件?

我想做一个go get:

go get github.com/go-sql-driver/mysql
Run Code Online (Sandbox Code Playgroud)

它失败并出现以下错误:

package github.com/go-sql-driver/mysql: cannot download, $GOPATH not set. For more details see: go help gopath
Run Code Online (Sandbox Code Playgroud)

当我这样做时go env,Go值列表如下所示:

ubuntu@ip-xxx-x-xx-x:~$ go env
GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH=""
GORACE=""
GOROOT="/usr/lib/go"
GOTOOLDIR="/usr/lib/go/pkg/tool/linux_amd64"
CC="gcc"
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread"
CGO_ENABLED="1"
Run Code Online (Sandbox Code Playgroud)

显然没有设置GOPATH,我如何设置它?

我看到许多线程提到了这个错误,但没有提供我的问题的答案,需要编辑哪个文件以提供此路径的值?

linux ubuntu go

243
推荐指数
11
解决办法
33万
查看次数

如何在golang中使用自定义包?

我正在尝试在Go中创建和使用自定义包.这可能是非常明显的事情,但我找不到太多关于此的信息.基本上,我在同一个文件夹中有这两个文件:

mylib.go

package mylib

type SomeType struct {

}
Run Code Online (Sandbox Code Playgroud)

main.go

package main

import (
    "mylib"
)

func main() {

}
Run Code Online (Sandbox Code Playgroud)

当我尝试时go run main.go,我收到此错误:

main.go:4:2: import "mylib": cannot find package
Run Code Online (Sandbox Code Playgroud)

我试图先运行go build mylib.go但它似乎没有做任何事情(没有生成文件,没有错误信息).所以任何想法我怎么能这样做?

import package go

168
推荐指数
4
解决办法
15万
查看次数

如何在go中添加新方法到现有类型?

我想在gorilla/mux路由和路由器类型上添加一个方便的util方法:

package util

import(
    "net/http"
    "github.com/0xor1/gorillaseed/src/server/lib/mux"
)

func (r *mux.Route) Subroute(tpl string, h http.Handler) *mux.Route{
    return r.PathPrefix("/" + tpl).Subrouter().PathPrefix("/").Handler(h)
}

func (r *mux.Router) Subroute(tpl string, h http.Handler) *mux.Route{
    return r.PathPrefix("/" + tpl).Subrouter().PathPrefix("/").Handler(h)
}
Run Code Online (Sandbox Code Playgroud)

但是编译器通知我

无法在非本地类型mux.Router上定义新方法

那我怎么做到这一点?我是否创建了一个具有匿名mux.Route和mux.Router字段的新结构类型?或者是其他东西?

extension-methods go

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

如何使用httptest测试http调用

我有以下代码:

package main

import (
    "encoding/json"
    "fmt"
    "io/ioutil"
    "log"
    "net/http"
    "time"
)

type twitterResult struct {
    Results []struct {
        Text     string `json:"text"`
        Ids      string `json:"id_str"`
        Name     string `json:"from_user_name"`
        Username string `json:"from_user"`
        UserId   string `json:"from_user_id_str"`
    }
}

var (
  twitterUrl = "http://search.twitter.com/search.json?q=%23UCL"
  pauseDuration = 5 * time.Second
)

func retrieveTweets(c chan<- *twitterResult) {
    for {
        resp, err := http.Get(twitterUrl)
        if err != nil {
            log.Fatal(err)
        }

        defer resp.Body.Close()
        body, err := ioutil.ReadAll(resp.Body)
        r := new(twitterResult) //or &twitterResult{} which returns *twitterResult
        err …
Run Code Online (Sandbox Code Playgroud)

http go

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

是否可以在golang中调用父结构的重写方法?

我想实现这样的代码,其中B继承自A并且只覆盖A的Foo()方法,我希望代码打印B.Foo(),但它仍然打印A.Foo(),似乎接收器在Golang在C++中无法像这样工作,在启用动态绑定的情况下,代码可以像我想要的那样工作.

我还发布了另一段代码,但它实现起来太难了,而且更像是一种黑客方式,我认为它不是Golang风格.

所以我的问题是:如果父的Bar()方法有一些逻辑,例如,打开一个文件,然后读取一些行,并使用Foo()将这些行输出到stdout,并将Child(在示例中为B)想要使用它们中的大多数,唯一的区别是Child希望Foo()将行输出到另一个文件.我该如何实施呢?我听说Golang的继承不能像C++或Java那样工作,Golang中的正确方法是什么?

package main 

import ( 
        "fmt" 
) 

type A struct { 
} 

func (a *A) Foo() { 
        fmt.Println("A.Foo()") 
} 

func (a *A) Bar() { 
        a.Foo() 
} 

type B struct { 
        A 
} 

func (b *B) Foo() { 
        fmt.Println("B.Foo()") 
} 

func main() { 
        b := B{A: A{}} 
        b.Bar() 
}

output: A.Foo()
Run Code Online (Sandbox Code Playgroud)

以下作品有效,但写作时

a := A{}
a.Bar()
Run Code Online (Sandbox Code Playgroud)

您将遇到编译器错误

package main

import (
    "fmt"
)

type I interface {
    Foo()
}

type A struct {
    i I

}

func (a *A) …
Run Code Online (Sandbox Code Playgroud)

oop inheritance overriding go

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

libc(glibc)在我们的linux应用程序中的作用是什么?

当我们使用gdb调试程序时,我们通常会看到在libc(glibc?)中定义了奇怪名称的函数.我的问题是:

  1. libc/glibc是一些标准C/C++函数的标准实现,如"strcpy","strlen","malloc"?
  2. 或者,它不仅是如上所述的第一次使用,还是Unix/Linux系统调用的包装,如"open","close","fctl"?如果是这样,为什么我们不能直接发出系统调用,没有libc?
  3. libc只包含一个lib(.a或.so)文件,还是许多lib文件(在这种情况下,libc是这组lib的通用名称)?这些lib文件驻留在哪里?
  4. libc和glibc有什么区别?

c linux gnu

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

golang:如何有效地确定文件中的行数?

在Golang,我正在寻找一种有效的方法来确定文件的行数.

当然,我总是可以循环遍历整个文件,但似乎效率不高.

file, _ := os.Open("/path/to/filename")
fileScanner := bufio.NewScanner(file)
lineCount := 0
for fileScanner.Scan() {
    lineCount++
}
fmt.Println("number of lines:", lineCount)
Run Code Online (Sandbox Code Playgroud)

是否有更好(更快,更便宜)的方式来查找文件有多少行?

go

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

如何按顺序遍历golang中的地图?

请看下面我的地图

var romanNumeralDict map[int]string = map[int]string{
  1000: "M",
  900 : "CM",
  500 : "D",
  400 : "CD",
  100 : "C",
  90  : "XC",
  50  : "L",
  40  : "XL",
  10  : "X",
  9   : "IX",
  5   : "V",
  4   : "IV",
  1   : "I",
}
Run Code Online (Sandbox Code Playgroud)

我希望按照键的大小顺序遍历此映射

  for k, v := range romanNumeralDict {
    fmt.Println("k:", k, "v:", v)
  }
Run Code Online (Sandbox Code Playgroud)

然而,这打印出来

k: 1000 v: M
k: 40 v: XL
k: 5 v: V
k: 4 v: IV
k: 900 v: CM
k: …
Run Code Online (Sandbox Code Playgroud)

go

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

从GO的初始stdin读取?

我想从go程序的原始stdin中读取.例如,如果我这样做stdin,我希望能够访问"test stdin".我试过读echo test stdin | go run test.go,但如果没有,那么它会等待输入.我也尝试先检查大小,但os.Stdin即使传入输入也是0.

我能做什么?

go

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

标签 统计

go ×9

linux ×2

c ×1

dictionary ×1

extension-methods ×1

gnu ×1

go-map ×1

http ×1

import ×1

inheritance ×1

oop ×1

overriding ×1

package ×1

ubuntu ×1