Go, also called golang, is an open source programming language initially developed at Google. It is a statically-typed language with syntax loosely derived from that of C, adding automatic memory management, type safety, some dynamic-typing capabilities, additional built-in types such as variable-...
0
votes
0answers
28 views
In golang, can any command & response queue API be converted to/from any thread safe blocking function call API?
It appears to me that I can convert any blocking API call "func BlockingFunc(Args) Result" into an asynchronous channel based API "func AsyncFunc(Args) <-chan Result" or visa versa using ...
1
vote
2answers
160 views
GO - Goroutine and Concurrency
Background:
Threads use pre-emptive scheduling, whereas fibers use cooperative scheduling.
With threads: the current execution path may be interrupted or preempted at any time This means that ...
0
votes
1answer
92 views
GO - How to define methods of named type?
In GO, rule is, methods can be defined only on named type and pointer to named type.
In C, below code, operations are defined on type(say List),
typedef struct List List; //list.h
typedef struct {
...
3
votes
2answers
159 views
Type safety - GO vs C pointers
C is a static-typed language that is not type-safe, because pointers(void *y) let you do pretty much anything you like, even things that will crash your program.
GO is also a static typed language
...
-4
votes
1answer
110 views
Did GO embrace any language construct introduced in Java?
GO has embraced,
1)
JavaScript/Python language constructs,
Higher order function
Closure
Slicing
Range operator
Anonymous function(inner function)
Provides abstractions ...
5
votes
1answer
77 views
How to parse a simple custom syntax in Go?
I have a limited amount of input types:
34:56 = sensorA#, sensorA#, sensorB#
2:5 = { led# }
66 = otherSensor
2,3,4,5 = greenRelay#, redRelay#, relayA#, relayA#
a:b implies range.
{name} implies a ...
3
votes
1answer
149 views
directory layout of a Go-lang project?
I'm just discovering the Go programming language.
(FWIW, I am fluent in C++, Ocaml, C, Common Lisp, Scheme, I know well Linux, and I have designed & implemented GCC MELT; I am considering a ...
-1
votes
1answer
43 views
How to add multiline comments for field of the struct in Go? [closed]
I faced with need add big comment for one of field of my struct, but I don't how to make it more idiomatic and graceful. You can see my versions, but, I think, it's unpleasantly to see. Any ...
5
votes
3answers
305 views
Is a common library a good idea?
I've always thought that a "common library" was a good idea. By that I mean a library that contains the common functionality that is often needed by a few different applications. It results in less ...
4
votes
3answers
114 views
What is the difference between Haskell's type classes and Go's interfaces?
I am wondering if there is a difference between Haskell's type classes and Go's interfaces. Both define types based on functions, in that way, that a value matches a type, if a function required by ...
2
votes
2answers
134 views
What does “a type system [that] has no hierarchy” mean?
I was reading the Go-lang documents and found under the section of Types that Go has no type hierarchy.
What does that mean exactly? Is it like python that types are been checked at run time (...
6
votes
1answer
190 views
Idiomatic way of writing a GUI system in Go?
I'm writing a little GUI system for my game in Go. So far my structure is kind of like this:
type Component interface {
Update()
Render(ctx)
Translate()
GetComponent() []Component
...
3
votes
3answers
292 views
How do programming languages work?
This is probably a dumb question, but how do programming languages work on a low level? If you go to the Go language GitHub page here, it says almost 90% of the source files are Go files. How is it ...
3
votes
1answer
101 views
Why are pointers of structs not printed like pointers of variables? [closed]
Consider the following code:
package main
import "fmt"
type Vertex struct {
X, Y int
}
var (
i = 10
p = &i
v = Vertex{1,2}
q = &v
)
func main() {
fmt.Println(p) // ...
0
votes
0answers
25 views
How to grow a dynamically-sized channel for a Goroutine pool?
I have a working Go program with a pool of N worker goroutines, which pick tasks from a channel. The use case is to do some processing on each of many databases in a sharded architecture.
I'm using a ...
0
votes
0answers
232 views
Gracefully kill golang worker with SIGNALS
I am using golang to build workers for my application, the reason being I like the idea of deploying a binary. I am trying to figure out the best approach for gracefully killing my workers on scale ...
4
votes
1answer
230 views
Idiomatic internal architecture of Go microservices
For learning purposes, i'm trying to implement a small project using (buzzword warning!) microservices. There are plenty of resources online talking about the 'macro' microservice world -integration, ...
20
votes
1answer
2k views
Could Hindley-Milner inference work for the Go language?
I've read that Hindley-Milner does not work with type systems that have subclasses, and there are other type system features that also do not work well with it. Go currently has only very limited type ...
1
vote
3answers
241 views
Flow control in Go without a for loop
I've been set a challenge that I'm trying to get my head around, but am struggling with the best (or 'correct') way to implement it. The challenge is to create a simple console app written in Go that ...
1
vote
1answer
137 views
In Go, why isn't append() implemented as a method, but as a function?
In Python, lists offer an append() method which can be called using standard Python method syntax; for example:
>>> my_list = []
>>> my_list.append('a', 'b', 'c')
>>> ...
0
votes
2answers
131 views
Should I log errors in the function they occur? or pass them back and log them when control returns?
One of the things I love about Go is how they encourage passing errors as return values, but when it comes to logging what is the most maintainable solution: passing the error as far back down the ...
0
votes
2answers
246 views
Why does gofmt discourage blank lines at the end of files?
Since I started programming, I've always been taught to leave a trailing blank line at the end of my files, the reason usually being something relating to how it makes concatenated files easier to ...
2
votes
1answer
198 views
What was the reason behind using quotes in Go's import statements?
The usage of quotes in Go's import statement strikes me as unnecessary. Typical Go import statements look like:
import "foo/bar"
import other_name "foo/bar"
import (
"foo/bar"
x "foo/baz/bar"
...
2
votes
1answer
228 views
Checking for nil in Go [closed]
In Go, is it idiomatic to check for nil and return an error if a parameter is nil?
Should pointer method receivers ever include nil checks?
I've seen a lot of code in other languages where people ...
1
vote
1answer
78 views
I am able to use PUT to act like GET when using my REST API
I wrote a simple REST API (just learning) using Go and I am calling it using python requests. I have two methods, "update_x", which updates the value of the resource, "get_x_times_n" which gets the ...
2
votes
1answer
77 views
TDD Duplicate Testing on Related Classes
In following the principle of testing only the exported functions on a package (using Go - or for others languages, the public functions on a class), I'm running into a scenario where related packages ...
-6
votes
1answer
229 views
Golang Testing Process [closed]
I am new to golang and RunC and now doing some research on it as a part of my intership. What kind of contents do the ' _test.go ' functions check during testing a program or a container with Golang (...
0
votes
1answer
50 views
How do I use type assertions in Go when returning an interface type?
A struct I'm working on called fieldDefinition holds metadata about a field used by an object in my web app. One of the fields on fieldDefinition (it does get a bit confusing) looks something like ...
2
votes
2answers
396 views
Restful User/Password Authentication
I'm currently designing a REST-API with the following properties:
Backend for a single page application (Later Apps)
Integrated user database for each instance
HTTPS/TLS only
Authentication with a ...
4
votes
2answers
110 views
Go - idioms/design for determining when an unknown number of goroutines are complete
I have a workflow wherein I walk recursively through a bunch of directories, then for each file perform some action. I'm using goroutines to walk each directory, and also to process each file. The ...
0
votes
1answer
72 views
What locking mechanism should be used when persisting data to files
I am beginning to learn how to create web applications from a golang tutorial. For simplicity, it persists data to files instead of a database. The complete code creates a server that can handle ...
0
votes
2answers
341 views
Nested functions; allow or not? [closed]
Having programmed a whole lot in python, using nested functions is a good way to not clutter the namespace with small helper functions that are only used once.
Now I'm programming in go, and upon ...
-1
votes
3answers
203 views
Would it be possible to create a language similar to Ruby/Python with static typing that had the speed/memory usage of a compiled C program? [closed]
One of the main drawbacks of Ruby/Python is performance. I understand that they are interpreted and C is compiled. (And there are things like JRuby which do JIT compilation with Ruby). But they never ...
2
votes
1answer
368 views
Single import in a large file vs. multiple imports in smaller files. [Golang]
I'm sure the folks at Google worked long and hard to ensure the programmer wouldn't have to worry about details like this, but I'm curious.
In Go if I have multiple files in the same package, but ...
1
vote
1answer
167 views
Does Go implicitly discourage getters and setters and encourage direct member access?
As the title says, is accessing public struct fields more idiomatic in Go than getters and setters? Wouldn't that lead to violation of data encapsulation, also public fields in other OO languages like ...
2
votes
1answer
753 views
How should I handle database failures in a web application? [duplicate]
I'm developing a simple RESTful API using Go's Goji framework (although this question is language-agnostic), in which parameters from the URL are queried against a PostgreSQL database. Here's how it ...
1
vote
3answers
409 views
Are project naming conventions more important than language naming conventions? [closed]
I'm working on a project with a senior developer and he doesn't really abide by the naming conventions of the language that we're using. The project is in Go and he uses underscores for everything. ...
1
vote
1answer
124 views
What is the difference between embedding and composing?
What is the difference between go's type embedding and object composition?
My understanding is that type embedding is object composition except the methods of the embedded type are automatically ...
16
votes
2answers
4k views
Is having source code for a Go project outside GOPATH a bad idea
I am working on a new project using Go, and we are all new to Go. We are following the standard go directory structure, and having all code under
$GOPATH/src/github.com/companyname/projectname
...
2
votes
2answers
745 views
How would I allow a PHP front end to communicate with a back end written in Go (or any other combination of languages)?
I like PHP. It's not overly complex to achieve what you want, you can write straight up HTML inside it, and I suppose I'm just used to it. I also like Go, having just discovered it while looking for ...
2
votes
1answer
56 views
I have an unordered list of rectangles and their neighbors on four sides with no origin. How can I efficiently convert this into a grid?
I am writing a GtkGrid-like container for my GUI library for Go, and I'm trying to write the actual layout part of the code.
Basically, I have an unordered list of controls. Each control is a ...
7
votes
2answers
2k views
Type inference in Golang/Haskell
I've read that Go doesn't actually have true type inference in the sense that functional languages such as ML or Haskell have, but I haven't been able to find a simple to understand comparison of the ...
43
votes
1answer
9k views
How are Rust Traits different from Go Interfaces?
I am relatively familiar with Go, having written a number of small programs in it. Rust, of course, I am less familiar with but keeping an eye on.
Having recently read http://yager.io/programming/go....
4
votes
2answers
328 views
Does a vm implemented in garbage collected language need a garbage collector?
This is more of a theoretical question. If jvm is implemented in go which itself is a garbage collected language, then does that jvm need a separate garbage collector to be implemented for its own ...
1
vote
2answers
353 views
Go-like interfaces + multi-methods make sense?
Thinking about the design of a potential new language, I wonder how related are the concepts of built a OO similar to GO interfaces and multi-methods (I get this from http://docs.julialang.org/en/...
3
votes
2answers
759 views
Why do concurrent languages tend to have more complicated syntax?
This is a question that's been on my mind for a while.
Recently I've been checking out concurrent languages like Haskell or Go or Erlang.
From my point of view, they have huge benefit in performance ...
3
votes
3answers
5k views
What are the advantages of pass by value?
I always thought pass by value is a legacy from the early languages, because the designers had never seen anything else. But after seeing the brand new languages like Go adapting the same principle ...
32
votes
1answer
12k views
Are go-langs goroutine pools just green threads?
The commentator here offers the following criticism of green threads:
I was initially sold on the N:M model as a means of having event driven programming without the callback hell. You can write ...
0
votes
1answer
395 views
Could ChromiumOS be re-written in Go from the ground up? [closed]
As Go seems able to performance match C and with Google obviously biased towards Go, I feel that it would be great way for Go to gain more traction.
The way ChromiumOS/Chrome has jumped from an ...
3
votes
1answer
572 views
What do goroutines, Ruby Fibers, etc. look like to the OS/Kernel?
In process concurrency and thread concurrency it's quite obvious how the kernel sees these as they map directly to real things that the kernel manages. When it comes to Golang goroutines and Ruby ...