技术圈开发者交流群:

Go 语言包管理利器:go mod

包管理工具已是编程语言的必备的工具,用于解决项目中复杂的依赖关系,提供包的版本控制、安装、更新等工具。Java 中有 MavenPython 中的 pip,还有 PHPcomposer 等,那么 Go 目前已经有非常成熟的包管理工具:go mod

在一个还没有使用go mod的项目中,需要使用go mod init初始化。

go mod init example.com/group/demo

上面命令初始化了一个包名为example.com/group/demo的,产生了go.mod文件:

GoLang 2024年03月15日 5618

Kratos:适用于云原生时代的终极 Go 微服务框架

微服务是一种软件技术架构,是将一个大型的单个应用或服务拆分成多个微服务,可扩展单个组件而不是整个应用程序堆栈,从而满足服务等级需求。

Kratos 一套轻量级 Go 微服务框架,包含大量微服务相关框架及工具,是一个 Web 应用程序框架,具有富有表现力、优雅的语法。

GoLang 2024年02月02日 2686

Go语言 build 构建时使用 ldflags 参数注入版本信息

在工作中,经常需要查看一些应用程序的版本,使用-v--vserion等参数查看一个应用的版本,比如:

# node -v
v16.13.1

# go version
go version
go version go1.12.9 linux/amd64

那通过go build构成后生成的可执行文件,如果获取它的版本呢? 你是否会想到,直接在代码中写死版本?当然可以,但是太麻烦了,发布版本前需要在代码中修改版本。

一般在发布应用程序时,都需要先go build,那么可以通过-ldflags参数来注入版本到应用程序中。

GoLang 2023年02月19日 761

Go语言中实现RSA加解密、签名验证算法

随着互联网的高速发展,人们对安全的要求也越来越高。密码学中两大经典算法,一个是对称加解密,另一个是非对称加解密,这里就来分享一下非对称加密算法的代表:RSA加解密。

在Go语言中实现RSA加解密还是比较简单的,网上很多教程都是基于Go原生标准库写的,代码量较多。这里分享一个好用的库:https://github.com/forgoer/openssl

go get https://github.com/forgoer/openssl
GoLang 2022年12月09日 511

Go语言中实现HmacSHA256加密算法

HmacSHA256加密算法比较常用的加密算法之一,它比MD5更加安全。HmacSHA256也是微信支付推荐的加密方式。

在Go语言中实现HmacSHA256还是比较简单的,虽然没有PHPhash_hmac一个函数搞定的方式简单,但比起Java中的实现还是简单不少。

GoLang 2022年10月09日 1052

Go语言中实现PHP中的serialize序列化和unserialize反序列

随着Go语言的快速发展,以及其卓越的性能优势,有不少PHP项目转换为Go语言,那么php独有的serialize()unserialize()数据,在Go语言怎么解析呢?

其实只要找到php中序列化的编码规则,就可以用Go去实现序列化和反序列了。

GoLang 2022年09月20日 983

Go语言切片删除指定元素

Go语言中并没有提供内置函数来删除切片,熟悉Java/PHP的都知道,在Java/PHP中都提供对list或数组的filter操作,那么在Go语言中就需要多用几行代码来实现删除切片中的指定元素了。

假设有个1~9的数组,要删除掉其中的偶数,那么这里先进行for循环,依次判断元素是否为偶数,然后将偶数的元素通过索引截取掉,下标i向左移动一位。

    numbers := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}
    for i := 0; i < len(numbers); i++ {
        if numbers[i]%2 == 0 { // 如果是偶数就删除
            // 通过截取删除
            numbers = append(numbers[:i], numbers[i+1:]...)
            i--
        }
    }
    fmt.Println(numbers) // [1 3 5 7 9]
GoLang 2022年09月05日 1179

Go语言中的切片

切片,是一组可变长度的、同类元素的集合

与数组相比切片的长度是不固定的。切片可以追加元素,在追加元素时可能使切片的容量增大。

切片在使用前必须初始化,未初始化的切片的值为nil

GoLang 2022年08月29日 495

Go语言中的数组

数组,是一组固定长度的、同类元素的集合。

固定长度,声明时指定长度,长度不可以改变。

同类元素,数组中的元素必须是同一类型的

数组的声明,比如:声明一个长度为3的、元素类型为string的数组:

GoLang 2022年08月15日 735

在Go语言中获取一个文件的MIME类型

在日常项目开发中,经常需要判断一个文件的类型,比如图片上传时,判断一个图片是否是jpgpng等。

如果单纯更改文件名的后缀取判断,这并不推荐,因为文件的后缀是可以随便修改的,如果是恶意程序伪装成.jpg图片上传,那会存在很大的安全隐患。

GoLang 2022年07月14日 2748

Go语言中的流程控制语句

流程控制是对程序在不同条件下的执行顺序的控制。通俗来讲,就是不同的代码在什么情况下才执行,哪些先执行,哪些后执行。

一般来说,程序代码的执行是从上往下顺序执行,但它这并不准确,如果有流程控制语句,只有当控制语句中指定条件得到满足时才执行相应的代码。

GoLang 2022年05月23日 1046

Go语言中的运算符

运算符是程序中用于计算的符号。

算术运算符主要用于数学计算。

+-*/%分别表示加、减、乘、除、及取余数。

GoLang 2022年03月15日 1249

Go语言中的基本数据类型及类型转换

布尔类型的类型标识符是bool,它的值只能为: true(真)、false(假),其默认值为false

// 声明isSunday为bool类型,默认值为 false
var isSunday bool
// 声明isSaturday变量,并赋值为true
var isSaturday bool = true
// 类型推导模式:
var isSaturday = true
// 可以缩写为
isSaturday := true
GoLang 2022年03月06日 1371

Go语言中的变量和常量

Go语言中的变量和常量是编码中不可缺少的一部分,它是用来存储程序执行过程中的值或结果。

变量是用于存储程序中的可变的值或结果。变量的命名只能有字母、数字、下划线组成,且只能由字母或下划线开头。

变量必须先声明、后使用,且声明后必须使用。

GoLang 2022年03月06日 1425

Go语言的数据类型和构成要素

这篇文章主要介绍Go语言中的数据类型和构成要素,包括标识符、关键字、运算符、标点符号等。

和其他语言一样,开始先来个Hello,world 程序:

// 包声明
package main

// 依赖包导入
import "fmt"

// 主函数
func main() {
    // 打印 Hello World !
    fmt.Println("Hello World !")
}
  • 布尔类型,bool,其值为:true或者false

  • 数值类型

    uint8       the set of all unsigned  8-bit integers (0 to 255)
    uint16      the set of all unsigned 16-bit integers (0 to 65535)
    uint32      the set of all unsigned 32-bit integers (0 to 4294967295)
    uint64      the set of all unsigned 64-bit integers (0 to 18446744073709551615)
    int8        the set of all signed  8-bit integers (-128 to 127)
    int16       the set of all signed 16-bit integers (-32768 to 32767)
    int32       the set of all signed 32-bit integers (-2147483648 to 2147483647)
    int64       the set of all signed 64-bit integers (-9223372036854775808 to 9223372036854775807)
    float32     the set of all IEEE-754 32-bit floating-point numbers
    float64     the set of all IEEE-754 64-bit floating-point numbers
    complex64   the set of all complex numbers with float32 real and imaginary parts
    complex128  the set of all complex numbers with float64 real and imaginary parts
    byte        alias for uint8
    rune        alias for int32
  • 字符串类型,string

  • 数组

  • 切片

  • 字典(Map)

  • 函数(Function)

  • 接口(Interface)

  • 结构体(Struct)

GoLang 2022年02月13日 1179
鄂ICP备19028750号-1 @copyright 2024 tech1024.com