newticker go

学习go语言编程之安全编程

## 数据加密 ### 对称加密 采用单密钥的加密算法,称为对称加密。 常见的单密钥加密算法有`DES`、`AES`、`RC4`等。 在对称加密中,私钥不能暴露,否则在算法公开的情况下,数据等同于明文。 ### 非对称加密 采用双密钥的加密算法,称为非对称加密。 在该系统中,私钥和公钥都可以被用作加 ......
语言编程 语言

学习go语言编程之标准库

## 标准库包分类 Golang标准库可以大致按其中库的功能进行以下分类: 分类 | 对应包 | 描述 | | 输入输出 | bufio,fmt,io,log,flag | 这个分类包括二进制以及文本格式在屏幕、键盘、文件以及其他设备上的输入输出等,比如二进制文件的读写。 文本处理 | encodi ......
语言编程 语言 标准

学习go语言编程之网络编程

## Socket编程 Golang语言标准库对Socket编程进行了抽象,无论使用什么协议建立什么形式的连接,都只需要调用`net.Dial()`即可。 ### Dial()函数 `Dial()`函数的原型如下: ```golang func Dial(network, address strin ......
语言编程 网络编程 语言 网络

学习go语言编程之工程管理

## Go命令行工具 安装了Go语言的安装包后,就直接自带Go命令行工具。 ```shell # 查看当前安装的Golang版本 go version # 查看go命令行工具的帮助信息 go help ``` Go命令行工具可以完成如下工作: - 代码格式化 - 代码质量分析和修复 - 单元测试与性 ......
语言编程 工程管理 语言 工程

Go - A Tour of Go Exercise: Fibonacci closure

package main import "fmt" // fibonacci is a function that returns // a function that returns an int. func fibonacci() func() int { f0, f1 := 0, 1 retu ......
Fibonacci Exercise closure Go Tour

go语言GMP模型

Robert Griesemer、Rob Pike、Ken Thompson三位Go语言创始人,对新语言商在讨论时,就决定了 要让Go语言成为面向未来的语言。当时多核CPU已经开始普及,但是众多“古老”编程语言却不能很好的 适应新的硬件进步,Go语言诞生之初就为多核CPU并行而设计。 Go语言协程中 ......
模型 语言 GMP

如何高效地编写Go单元测试

前言 单元测试是代码质量的保证,良好的单元测试不仅能够提前暴露代码问题,还极大便利了代码重构,它能保证代码重构前后功能保持一致,让重构活动能够顺利的进行下去。 Go对单元测试的支持已经相当友好了,原生的标准库就已经支持了单元测试。在Go中编写单元测试也非常简单,Go认为以_test.go结尾的文件都 ......
单元

《高级程序员 面试攻略 》go tool pprof 一般关注哪几项指标

使用 Go 的性能分析工具 `go tool pprof` 可以获取关于程序性能的详细信息。在分析性能时,一般关注以下几项指标: 1. CPU Profiling(CPU 分析):CPU profiling 用于分析程序的 CPU 使用情况,确定 CPU 瓶颈所在。在 `go tool pprof` ......
程序员 指标 攻略 程序 pprof

《高级程序员 面试攻略 》go抢占式调度 通俗拟人解释

当我们谈论 Go 语言的抢占式调度时,可以使用一个通俗的拟人解释来描述它的工作原理。 假设你正在组织一场音乐会,有许多音乐家需要在舞台上演奏乐器。你作为指挥,负责协调他们的演奏。每个音乐家都是一个 Goroutine(Go 协程),而你是调度器(Scheduler)。 在开始音乐会之前,你将每个音乐 ......
拟人 程序员 攻略 程序

《高级程序员 面试攻略 》通俗拟人解释 swoole的协程 和 go的协程有什么区别

Swoole 的协程和 Go 的协程(Goroutine)都是用于实现轻量级并发的机制,但它们有一些区别。 1. 语言和环境:Swoole 协程是在 PHP 语言中实现的,而 Go 协程是在 Go 语言中实现的。因此,它们在语言和运行时环境上存在差异。 1. 编程模型:Swoole 协程使用的是“同 ......
拟人 程序员 攻略 程序 swoole

Go - Keywords, Operators and punctuation

Keywords The following keywords are reserved and may not be used as identifiers. break default func interface select case defer go map struct chan els ......
punctuation Operators Keywords and Go

Go 常量

如果一个变量应该有一个固定的、不能改变的值,你可以使用`const`关键字。 `const`关键字将变量声明为"常量",这意味着它是**不可改变和只读**的。 **语法** `const CONSTNAME type = value` ## 声明常量 声明常量的示例: ```Go package m ......
常量 Go

学习go语言编程之网络编程

## Socket编程 Golang语言标准库对Socket编程进行了抽象,无论使用什么协议建立什么形式的连接,都只需要调用`net.Dial()`即可。 ### Dial()函数 `Dial()`函数的原型如下: ```golang func Dial(network, address strin ......
语言编程 网络编程 语言 网络

学习go语言编程之并发编程

## 并发基础 并发包含如下几种主流的实现模型: - 多进程 - 多线程 - 基于回到的非阻塞/异步IO - 协程 ## 协程 与传统的系统级线程和进程相比,协程最大的优势在于“轻量级”,可以轻松创建上百万个而不会导致系统资源枯竭,而线程和进程通常最多不超过1万个。 Golang在语言级别支持协程, ......
语言编程 语言

Go 语言并发

启动单个goroutine package main import ( "fmt" "time") func hello(){ fmt.Println("hello")} func main() { go hello() fmt.Println("欢迎来到编程狮") time.Sleep(time. ......
语言 Go

Go 语言反射(Reflect)

Go语言提供了一种机制,在不知道具体类型的情况下,可以用反射来更新变量值,查看变量类型 Typeof package main import ( "fmt" "reflect") func main() { var booknum float32 = 6 var isbook bool = true ......
Reflect 语言 Go

Go 错误处理

Go 语言通过内置的错误接口提供了非常简单的错误处理机制。 error类型是一个接口类型 type error interface { Error() string} package main import ( "fmt") // 定义一个 DivideError 结构type DivideErro ......
错误 Go

Go 语言接口

Go 语言提供了另外一种数据类型即接口,它把所有的具有共性的方法定义在一起,任何其他类型只要实现了这些方法就是实现了这个接口。 package main import ( "fmt") type Phone interface { call()} type NokiaPhone struct {} ......
接口 语言 Go

Go 语言递归函数

递归,就是在运行的过程中调用自己。 阶乘 package main import "fmt" func Factorial(x int) (result int) { if x == 0 { result = 1 } else { result = x * Factorial(x - 1) } re ......
函数 语言 Go

Go 语言类型转换

package main import "fmt" func main() { var sum int = 17 var count int = 5 var mean float32 mean = float32(sum)/float32(count) fmt.Printf("mean 的值为: % ......
语言 类型 Go

Go 语言范围(Range)

range 关键字用于for循环中迭代数组(array)、切片(slice)、通道(channel)或集合(map)的元素。 package mainimport "fmt"func main() { //这是我们使用range去求一个slice的和。使用数组跟这个很类似 nums := []int ......
范围 语言 Range Go

Go 语言Map(集合)

定义 Map /* 声明变量,默认 map 是 nil */var map_variable map[key_data_type]value_data_type /* 使用 make 函数 */map_variable = make(map[key_data_type]value_data_type ......
语言 Map Go

Go 语言切片(Slice)

切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大。 定义 var identifier []type var slice1 []type = make([]type, len) slice1 := make([]type, len) make([]T, length, capacit ......
语言 Slice Go

2023-08-14:用go语言写算法。给出两个长度相同的字符串 str1 和 str2 请你帮忙判断字符串 str1 能不能在 零次 或 多次 转化 后变成字符串 str2 每一次转化时,你可以将

2023-08-14:用go语言写算法。给出两个长度相同的字符串 str1 和 str2, 请你帮忙判断字符串 str1 能不能在 零次 或 多次 转化 后变成字符串 str2, 每一次转化时,你可以将 str1 中出现的 所有 相同字母变成其他 任何 小写英文字母, 只有在字符串 str1 能够通 ......
字符串 字符 str str1 str2

Go 语言结构体

结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。 定义结构体 结构体定义需要使用 type 和 struct 语句。struct 语句定义一个新的数据类型,结构体中有一个或多个成员。type 语句设定了结构体的名称 type struct_variable_type struct { m ......
语言 结构 Go

Go 语言指针

变量是一种使用方便的占位符,用于引用计算机内存地址。 Go 语言的取地址符是 &,放到一个变量前使用就会返回相应变量的内存地址。 package main import "fmt" func main() { var a int = 10 fmt.Printf("变量的地址: %x\n", &a ) ......
指针 语言 Go

Go 语言数组

声明数组 var balance [10] float32 初始化数组 var balance = [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0} var balance = []float32{1000.0, 2.0, 3.4, 7.0, 50.0} balance ......
数组 语言 Go

Go语言中切片的索引语法

以下是 Go 切片的更详细的索引和子切片操作: ### 基本的切片索引语法 切片索引的基本语法是 `s[start:end:capacity]`,其中: - `start`:开始索引,包含此索引位置的元素。 - `end`:结束索引,排除此索引位置的元素。 - `capacity`:切片的最大容量。 ......
语法 索引 语言

Go/C++/Java中的数组对比

数组是大多数编程语言中的基本数据结构。然而,不同的编程语言对数组的实现和语义有所不同。以下是 Go、C++ 和 Java 中数组的主要区别: ### 1. 基本性质 - **Go**: - 数组是值类型。赋值或将数组传递给函数时,内容会被复制。 - 数组的大小是其类型的一部分。因此,具有不同大小的数 ......
数组 Java Go

Go 语言变量作用域

局部变量 在函数体内声明的变量称之为局部变量,它们的作用域只在函数体内 package main import "fmt" func main() { /* 声明局部变量 */ var a, b, c int /* 初始化参数 */ a = 10 b = 20 c = a + b fmt.Print ......
变量 作用 语言 Go