© Copyright Copyright © 2019, GopherAcademy; all rights reserved. [Mediumish Theme](https://www.wowthemes.net) by WowThemes.net
Tutorials
聚合自 go.dev 与社区精选源。
Important Conference Announcement
You may have noticed that the team at Gopher Academy has been unusually quiet lately. In April, we contacted the Walt Disney World Swan and Dolphin Resort to discuss the cancellation of our conference...
GoVirCon is back
With cases of COVID-19 continuing to rise throughout the US due to the Delta variant, we at Gopher Academy have made the bittersweet decision to bring GoVirCon back.
Storytelling On Stage: Proposal Writing For Procrastinators
Crafting a GopherCon Proposal The Call for Proposals for GopherCon 2021 is closing in less than a week for GopherCon 2021. If you’re reading this, I’m assuming you’re thinking about submitting a propo...
Storytelling On Stage: Advice
Crafting a GopherCon Proposal The Call for Proposals for GopherCon 2021 is open! If you’re reading this I’m assuming you’re thinking about submitting a proposal.
Storytelling On Stage: Storytelling
Crafting a GopherCon Proposal The Call for Proposals for GopherCon 2021 is now open! If you’re reading this, I’m assuming you’re thinking about submitting a proposal.
Storytelling On Stage: The Basics
Crafting a GopherCon Proposal The Call for Proposals for GopherCon 2021 opens April 5th, and if you’re reading this I’m going to assume you’re thinking about submitting a talk for GopherCon 2021, howe...
GopherCon 2020 Agenda
#GoVirCon Schedule Announced We’re really excited to announce the schedule for our virtual presentation of GopherCon 2020! Our official programming starts on Monday, November 9th and Tuesday, November...
GopherCon 2020 Online
#GopherCon is now #GoVirCon! With increasing cases of coronavirus in the US, travel bans and restrictions holding strong likely through the end of the year, and Gopher Academy’s increasing concern reg...
GopherCon 2020 Update
It’s been a few weeks since our first release about GopherCon and COVID-19, so we wanted to share an update. You all are the backbone of this conference and so important to us!
GopherCon 2020 COVID-19 Response
Many in the community are facing concerns about COVID-19, the disease caused by the newly discovered coronavirus \[1]. We at Gopher Academy are following the status of COVID-19 carefully in preparatio...
HTML, CSS and Go, Together at Long Last: Vugu Premise and Example
Huh, what’s a Vugu? Vugu is a Go library that makes it easy to write HTML markup and Go code which is compiled and run in the browser using WebAssembly.
Some Thoughts on Library Design
As programmers we use libraries a lot. But library design is hard. In this article, I will walk through some considerations in designing a library.
API Clients for Humans
Most developers, at one point or another, have either built a web API or have been a consumer of one. An API client is a package that provides a set of tools that can be used to develop software that ...
Navigating the uncharted waters of SSL/TLS certificates and gRPC with Go
There are different ways to establishing a secure TLS connection with Go and gRPC. Contrary to popular belief, you don’t need to manually provide the Server certificate to your gRPC client in order to...
Control packet flow with TCP_NODELAY in Go
Writing web services requires a lot of effort and thinking to make them robust and performant. There’s a wide range of areas to look in order to improve the performance of our service.
Test Driven Advent of Code
By now most of you have probably heard of Advent of Code. If not, go check it out. I’ll give you a few moments…
Benchmark Surprises
I love a good mystery. If you really want my undivided attention, present me with a program which does a thing, and also a proof that it can’t possibly do that thing.
Building a global services network using Go, QUIC and Micro
Over the past 6 months we at Micro have been hard at work developing a global service network to build, share and collaborate on microservices.
Como construir sitios web con HUGO
Esta publicación tiene como objetivo enseñar a como construir sitios web utilizando HUGO y como subirlo a un hosting. Hugo es un generador de sitios web estáticos construidos con el lenguaje GO, fue c...
Fun With Flags
In a previous article we discussed why command line applications are important and talked about few guidelines. In this article we’ll see how we can use the built-in flag package to write command line...
Safe use of unsafe.Pointer
Package unsafe provides an escape hatch from Go’s type system, enabling interactions with low-level and system call APIs, in a manner similar to C programs.
Contribute Beyond Code: Open Source for Everyone
Developers are often encouraged to contribute to open source. If you don’t consider yourself a developer, it can feel daunting to start on the journey to contributing.
Directional Channels in Go
Go’s channels provide a primitive for typed, synchronous message passing. Combined with goroutines, they form the backbone of Go’s CSP-inspired concurrency model. They’re simple and expressive, but th...
Writing Friendly Command Line Applications
Let me tell you a story… In 1986 Knuth wrote a program to demonstrate literate programming. The task was to read a file of text, determine the n most frequently used words, and print out a sorted list...
Go Advent Introduction
Our tradition at Gopher Academy is to host an Advent Calendar of blog posts contributed by the community each December. I’m excited to kick off the 2019 series with this introduction!
Reactive planning and reconciliation in Go
I wrote a quick introduction about why I think reactive planning is a cloud native pattern and I published an article about control theory, but I have just scratched the surface of this topic obviousl...
Integration test made easy with testcontainers
There are a lot of information in the title I know, but I am not good enough to make it simple. Back in the days, I tried to make some contribution to OpenZipkin an open source tracing infrastructure ...
Personal Photo Management using Go and TensorFlow
We love taking photos. Privacy concerns - and the wish to properly archive them for the next generation - brought us to the conclusion that existing cloud solutions are not the right tool to keep them...
Avoiding high GC overhead with large heaps
The Go Garbage Collector (GC) works exceptionally well when the amount of memory allocated is relatively small, but with larger heap sizes the GC can end up using considerable amounts of CPU.
Using Go in Devops
== Using Go for DevOps == This post is aiming to provide a new angle on using Go. Don’t expect code snippets or learning a new thing, but rather be open for a new perspective, and share this with your...
Computing and plotting π with Gonum and a zest of Monte Carlo
Today we will see how we can compute π with a technique called Monte Carlo. Wikipedia, the ultimate source of truth in the (known) universe has this to say about Monte Carlo:
GPIOs and Go
Go Advent, Dec. 22, 2018 Recently, I decided that I needed a small heads up display for import things I kept forgetting, like the time until an event started or number of unread emails in my inbox.
Members, Methods, and Interfaces
Opaque Datatypes Considered Awesome I am periodically reminded that many people don’t realize that C actually allows the creation of opaque data types. This is a possibly-surprising side effect of the...
Introducing Glot the plotting library for Golang
Go is an open source programming language that makes it easy to build simple, reliable, and efficient software. It provides an expressive syntax with its lightweight type system and comes with concurr...
LLVM IR and Go
In this post, we’ll look at how to build Go programs – such as compilers and static analysis tools – that interact with the LLVM compiler framework using the LLVM IR assembly language.
Go and Apache Arrow: building blocks for data science
Today we will see how Apache Arrow could be useful for data science, or – really – a lot of analysis workloads. Lingua franca In Data Science and in many scientific fields, the lingua franca is Python...
Apache Beam and Google Dataflow in Go
Overview Apache Beam (batch and stream) is a powerful tool for handling embarrassingly parallel workloads. It is a evolution of Google’s Flume, which provides batch and streaming data processing based...
The Relationship Between Interfaces and Reflection
Interfaces are one of the fundamental tools for abstraction in Go. Interfaces store type information when assigned a value. Reflection is a method of examining type and value information at runtime.
Debugging with Mozilla rr project and GoLand
Debuggers. Traditionally they are used to find complex bugs and reason about how they happen. But what if you cannot explain why some changes happen between steps?
Exploring byte parsing APIs in Go
Several years ago, I began exploring Linux’s Netlink inter-process communication interface. Netlink is used for retrieving information from the Linux kernel, and in order to cross the kernel boundary,...
Bringing Sanity to your Dependencies with Go Modules and Athens
As many of us know, Go version 1.11 introduced Go Modules, a brand new dependency management system. A Little Bit About Modules Before 1.11, our dependencies were a collection of Go packages with a si...
gpython: a Python interpreter written in Go "batteries not included"
Gpython is a Python 3.4 interpreter written in Go. This is the story of how it came to be, how it works and where it is going.
Improve Your Breadmaking Skills with Go and Open-Source Monitoring
I have many different interests, including baking, open-source software, and more recently, systems monitoring and learning Go. As a way for me to expand my practical knowledge on each item, I devised...
Creating WebGL apps with Go
TL;DR In this article I’ll share my experience building an interactive 3D WebGL-based application for peer-to-peer messaging protocol simulation without writing any single line in JS.
Building a CI/CD Bot with Slack and Kubernetes.
This article is about an experiment at Africa’s Talking on using Slack to manage our deployment process. Like many companies, we use Kubernetes to manage our deployments, and Slack for internal commun...
A Dive Into the `fmt` Package
We usually use the fmt package without giving it much thought. A fmt.Printf here, a fmt.Sprintf there and on we go. However, if you’ll take a closer look, you’ll be able to get much more out of it.
Go and WebAssembly: running Go programs in your browser
For a long time, Javascript was the lingua franca amongst web developers. If you wanted to write a stable, mature web app, writing in javascript was pretty much the only way to go.
On the tension between generic code and special cases
The io.Reader and io.Writer interfaces appear in practically all Go programs, and represent the fundamental building blocks for dealing with streams of data. An important feature of Go is that the abs...
How to Send and Receive SMS: Implementing a GSM Protocol in Go
When developers add an SMS component in their app either for verification or notification purposes, they usually do it via RESTful API like the ones provided by Twilio.