PROGRAMMING
In-depth Exploration of Direct and Indirect Dependency Management in GoLang
The dependency management in Golang is handled using go mod. go mod is the official dependency management tool introduced by the Golang team. It assists developers in managing project dependencies to ensure the stability and maintainability of the project code. In go mod, dependencies are categorized into two types based on how packages are imported in the code: direct dependencies and indirect dependencies. Direct dependencies are explicitly referenced in the project code, while indirect dependencies are dependencies of the direct dependencies. Below we will provide detailed explanations of t...
1,815 0 GO MODULE DIRECT DEPENDENCY INDIRECT DEPENDENCY
Ensuring Go Interface Implementation: A Quick Guide
IntroductionGo's simplicity and power shine in its interface system, offering a clean way to define contracts between types. However, when it comes to checking whether a struct satisfies an interface, Go's static typing philosophy means there isn't a direct runtime check. In this concise guide, we'll explore practical methods, including some lesser-known tricks, to verify whether a struct implements an interface.Method 1: Type Assertion and a Dummy Methodpackage mainimport "fmt"type MyInterface interface { MyMethod()}type MyStruct struct{}func (ms MyStruct) MyMethod() { fmt.Println("MyMe...
1,192 0 INTERFACE GOLANG IMPLEMENTS
new() and make() in GoLang
GoLang is a modern, statically typed, compiled programming language designed for building scalable, concurrent, and efficient software. It provides various built-in functions and features that help developers write concise and efficient code. Among them are the new() and make() functions, which may appear similar at first glance but serve different purposes in GoLang and are crucial for memory allocation and data initialization.In this blog article, we will explore the differences between the new() and make() functions, and understand when and how to use them effectively.new() and make()new() ...
Guide to Implement an SSH Client Using Golang
SSH, short for Secure Shell, is a network protocol used for securely remote logging into other computers on a network. I believe most backend developers are familiar with SSH. Common shell tools used for logging into servers, such as Xshell, SecureCRT, and iTerm2, are all based on the SSH protocol. In Golang, the crypto/ssh package provides functionality for implementing an SSH client. In this article, we will explain in detail how to implement an SSH client using Golang.Creating SSH Client ConfigurationFirst, we need to configure the parameters for the SSH client to connect to the server. The...
4,483 0 SSH GUIDE GOLANG SSH CLIENT
Singleton Pattern in Golang
Singleton pattern is the simplest design pattern in software design. It ensures that only one instance of an object exists globally, regardless of how many times the object is instantiated. Based on the characteristics of the singleton pattern, it can be applied to scenarios such as global unique configuration, database connection objects, file access objects, etc. In Go language, there are multiple ways to implement the singleton pattern. Today, let's learn together about some of these approaches.Eager InitializationImplementing the singleton pattern using eager initialization is very simple....
2,172 0 GOLANG SINGLETON PATTERN TUTORIAL
What can select do in GoLang
In Go language, select is a keyword used to listen to and perform IO operations related to channels.With the select statement, we can simultaneously listen to multiple channels and perform corresponding operations when any of the channels are ready.This article will summarize the common uses of the select statement and provide some considerations when using it.Basic syntaxThe basic syntax of the select statement is as follows:select {case <-channel1: // when channel1 has data to processcase data := <-channel2: // when channel2 has data to processdefault: // if no channel has dat...
errGroup in GoLang explained
Today, let's talk about the usage and applicable scenarios of errGroup, which is often used. Why is it useful? Generally, when we use goroutine, we cannot return a value. If you want to pass out the result of the goroutine execution, you usually have to use the channel. The errGroup package is suitable if you want to know when the goroutine you opened encounters an error during execution and stop working, and I need to know the error value.errGroup usageThe package needs to be downloaded and installed first. go get -u golang.org/x/syncAn example of using it would bepackage mainimport ( ...
5,560 0 CONCURRENCY WAITHROUP ERRGROUP GOLANG
Deep Understanding of ReentrantLock: Unlocking the Mysteries of Java Concurrent Programming
ReentrantLock introductionReentrantLock is a class in the Java concurrent package, java.util.concurrent.locks, and is an implementation of the Lock interface. As its name suggests, it is a reentrant mutual exclusion lock.A mutual exclusion lock is a synchronization tool used to protect shared resources, ensuring that only one thread can access the resource at a given time. Reentrant means that a thread can acquire the same lock multiple times without causing a deadlock.This lock provides some basic behaviors that are the same as those of the built-in synchronization mechanism. For example, a t...
3,383 0 MULTITHREADING CONCURRENCY REENTRANTLOCK JAVA