Questions tagged [go]

Go is an open-source programming language. It is statically-typed, with a syntax loosely derived from C, adding automatic memory management, type safety, some dynamic typing capabilities, additional built-in types such as variable-length arrays (called slices) and key-value maps, and a large standard library.

Go (sometimes "Golang" for search-ability) is a general-purpose programming language. While originally created by Google, Go is an open source project with a large contributor base. It aims to be efficient both for development and execution with a focus on fast compilation and increased maintainability of large projects. Go was originally targeted at systems programming tasks such as building server/web applications, high throughput middleware, and databases, but it has a growing ecosystem of libraries allowing it to be used for a wide variety of tasks such as developing end-user daemons, CLIs, and desktop/mobile applications.

The first class concurrency mechanisms of Go make it easier to write programs that get the most out of multicore and networked machines, while its structural type system enables flexible and modular program construction. Go compiles quickly to memory safe machine code yet has the convenience of garbage collection and the power of run-time reflection. It's a fast, statically typed, compiled language that develops like a dynamically typed, interpreted language, but performs like native code.

Go Reference Documentation

Go Tutorials

Go Books (Paid)

Go Books (Free)

Popular Go Projects

Go Mailing Lists

Go IRC Channel

Online Go Compilers

Go FAQ

Go Code Editors & IDEs

Go Dependency Management

53896 questions
958
votes
11 answers

How to check if a map contains a key in Go?

I know I can iterate over a map m by, for k, v := range m { ... } and look for a key but is there a more efficient way of testing a key's existence in a map? I couldn't find the answer in the language spec.
grokus
  • 13,644
  • 8
  • 27
  • 33
798
votes
18 answers

How to efficiently concatenate strings in go

In Go, a string is a primitive type, which means it is read-only, and every manipulation of it will create a new string. So if I want to concatenate strings many times without knowing the length of the resulting string, what's the best way to do…
Randy Sugianto 'Yuku'
  • 64,635
  • 54
  • 168
  • 216
677
votes
10 answers

How do you write multiline strings in Go?

Does Go have anything similar to Python's multiline strings: """line 1 line 2 line 3""" If not, what is the preferred way of writing strings spanning multiple lines?
aeter
  • 9,522
  • 4
  • 22
  • 28
624
votes
8 answers

Is there a foreach loop in Go?

Is there a foreach construct in the Go language? Can I iterate over a slice or array using a for?
tatsuhirosatou
  • 22,689
  • 14
  • 37
  • 38
597
votes
10 answers

What is an idiomatic way of representing enums in Go?

I'm trying to represent a simplified chromosome, which consists of N bases, each of which can only be one of {A, C, T, G}. I'd like to formalize the constraints with an enum, but I'm wondering what the most idiomatic way of emulating an enum is in…
carbocation
  • 7,064
  • 7
  • 21
  • 24
588
votes
7 answers

Concatenate two slices in Go

I'm trying to combine the slice [1, 2] and the slice [3, 4]. How can I do this in Go? I tried: append([]int{1,2}, []int{3,4}) but got: cannot use []int literal (type []int) as type int in append However, the documentation seems to indicate this is…
Kevin Burke
  • 49,451
  • 66
  • 163
  • 280
557
votes
10 answers

How to convert an int value to string in Go?

i := 123 s := string(i) s is 'E', but what I want is "123" Please tell me how can I get "123". And in Java, I can do in this way: String s = "ab" + "c" // s is "abc" how can I concat two strings in Go?
hardPass
  • 14,241
  • 15
  • 36
  • 41
544
votes
13 answers

Optional Parameters in Go?

Can Go have optional parameters? Or can I just define two functions with the same name and a different number of arguments?
devyn
  • 13,761
  • 6
  • 22
  • 14
522
votes
11 answers

How can I convert a zero-terminated byte array to string?

I need to read [100]byte to transfer a bunch of string data. Because not all of the strings are precisely 100 characters long, the remaining part of the byte array is padded with 0s. If I convert [100]byte to string by: string(byteArray[:]), the…
Derrick Zhang
  • 19,341
  • 17
  • 48
  • 71
500
votes
12 answers

How to check if a file exists in Go?

Go's standard library does not have a function solely intended to check if a file exists or not (like Python's os.path.exists). What is the idiomatic way to do it?
Sridhar Ratnakumar
  • 68,948
  • 61
  • 139
  • 172
481
votes
24 answers

How to print struct variables in console?

How can I print (in the console) the Id, Title, Name, etc. of this struct in Golang? type Project struct { Id int64 `json:"project_id"` Title string `json:"title"` Name string `json:"name"` Data Data …
fnr
  • 6,297
  • 5
  • 11
  • 15
457
votes
3 answers

What are the use(s) for tags in Go?

In the Go Language Specification, it mentions a brief overview of tags: A field declaration may be followed by an optional string literal tag, which becomes an attribute for all the fields in the corresponding field declaration. The tags are…
liamzebedee
  • 12,096
  • 19
  • 65
  • 114
444
votes
14 answers

How to find the type of an object in Go?

How do I find the type of an object in Go? In Python, I just use typeof to fetch the type of object. Similarly in Go, is there a way to implement the same ? Here is the container from which I am iterating: for e := dlist.Front(); e != nil; e =…
Rahul
  • 9,553
  • 17
  • 53
  • 76
437
votes
7 answers

Format a Go string without printing?

Is there a simple way to format a string in Go without printing the string? I can do: bar := "bar" fmt.Printf("foo: %s", bar) But I want the formatted string returned rather than printed so I can manipulate it further. I could also do something…
Carnegie
  • 4,505
  • 2
  • 13
  • 7
422
votes
9 answers

How to assign string to bytes array

I want to assign string to bytes array: var arr [20]byte str := "abc" for k, v := range []byte(str) { arr[k] = byte(v) } Have another method?
sofire
  • 4,337
  • 2
  • 12
  • 4
1
2 3
99 100