随笔分类 - golang
初学者的探索
摘要:bufio.NewReader和io.LimitedReader在Go语言中都是用于读取数据的,但它们的工作方式和使用场景有所不同。 bufio.NewReader函数会创建一个新的Reader,它实现了io.Reader接口,并在其上添加了缓冲功能12。这意味着它可以从输入流(如文件或网络连接)中
阅读全文
摘要:1. 读取文件 文件读取是所有编程语言中最常见的操作之一。本教程我们会学习如何使用 Go 读取文件。 本教程分为如下小节。 将整个文件读取到内存 使用绝对文件路径 使用命令行标记来传递文件路径 将文件绑定在二进制文件中 分块读取文件 逐行读取文件 将整个文件读取到内存 将整个文件读取到内存是最基本的
阅读全文
摘要:1. Panic和recover 什么是 panic? 在 Go 语言中,程序中一般是使用错误来处理异常情况。对于程序中出现的大部分异常情况,错误就已经够用了。 但在有些情况,当程序发生异常时,无法继续运行。在这种情况下,我们会使用 panic 来终止程序。当函数发生 panic 时,它会终止运行,
阅读全文
摘要:1. 自定义错误 在上一教程里,我们学习了 Go 中的错误是如何表示的,并学习了如何处理标准库里的错误。我们还学习了从标准库的错误中提取更多的信息。 在本教程中,我们会学习如何创建我们自己的自定义错误,并在我们创建的函数和包中使用它。我们会使用与标准库中相同的技术,来提供自定义错误的更多细节信息。
阅读全文
摘要:什么是 defer? defer 语句的用途是:含有 defer 语句的函数,会在该函数将要返回之前,调用另一个函数。这个定义可能看起来很复杂,我们通过一个示例就很容易明白了。 示例 package main import ( "fmt" ) func finished() { fmt.Printl
阅读全文
摘要:1. 合取代继承 Go 不支持继承,但它支持组合(Composition)。组合一般定义为“合并在一起”。汽车就是一个关于组合的例子:一辆汽车由车轮、引擎和其他各种部件组合在一起。 通过嵌套结构体进行组合 在 Go 中,通过在结构体内嵌套结构体,可以实现组合。 组合的典型例子就是博客帖子。每一个博客
阅读全文
摘要:Mutex vs 信道 通过使用 Mutex 和信道,我们已经解决了竞态条件的问题。那么我们该选择使用哪一个?答案取决于你想要解决的问题。如果你想要解决的问题更适用于 Mutex,那么就用 Mutex。如果需要使用 Mutex,无须犹豫。而如果该问题更适用于信道,那就使用信道。:) 由于信道是 Go
阅读全文
摘要:关闭信道和使用 for range 遍历信道 数据发送方可以关闭信道,通知接收方这个信道不再有数据发送过来。 当从信道接收数据时,接收方可以多用一个变量来检查信道是否已经关闭。 v, ok := <- ch 上面的语句里,如果成功接收信道所发送的数据,那么 ok 等于 true。而如果 ok 等于
阅读全文
摘要:从技术上看并发和并行 通过现实中的例子,我们已经明白了什么是并发,以及并发与并行的区别。作为一名极客,我们接下来从技术的角度来考察并发和并行。:) 假如我们正在编写一个 web 浏览器。这个 web 浏览器有各种组件。其中两个分别是 web 页面的渲染区和从网上下载文件的下载器。假设我们已经构建好了
阅读全文
摘要:结构体相等性(Structs Equality) 结构体是值类型。如果它的每一个字段都是可比较的,则该结构体也是可比较的。如果两个结构体变量的对应字段相等,则这两个变量也是相等的。 package main import ( "fmt" ) type name struct { firstName
阅读全文
摘要:1. 数组和切片 数组是同一类型元素的集合。例如,整数集合 5,8,9,79,76 形成一个数组。Go 语言中不允许混合不同类型的元素,例如包含字符串和整数的数组。(译者注:当然,如果是 interface{} 类型数组,可以包含任意类型) 数组的声明1 一个数组的表示形式为 [n]T。n 表示数组
阅读全文
摘要:Go 语言运算符 运算符用于在程序运行时执行数学或逻辑运算。 Go 语言内置的运算符有: l 算术运算符 l 关系运算符 l 逻辑运算符 l 位运算符 l 赋值运算符 l 其他运算符 算术运算符 下表列出了所有Go语言的算术运算符。假定 A 值为 10,B 值为 20。 运算符 描述 实例 + 相加
阅读全文
摘要:这是我们 Golang 系列教程的第一个教程。 1. GO介绍与安装 Golang 是什么 Go 亦称为 Golang(译注:按照 Rob Pike 说法,语言叫做 Go,Golang 只是官方网站的网址),是由谷歌开发的一个开源的编译型的静态语言。 Golang 的主要关注点是使得高可用性和可扩展
阅读全文
摘要:1 题目(单选题) 如下Go语言程序的输出结果是() package main import "fmt" func f1(name string) string { fmt.Println("in f1", name) return name } func f2(name string) strin
阅读全文
摘要:原生的golang中,函数定义不支持默认参数。但是在实际开发过程中,经常会有些参数用户可以不关心或者可以根据实际情况去定制实现,这个时候需要使用到默认参数,在C++中,函数的定义和实现本来就支持默认参数,如果需要在golang中实现默认参数,可以参考一下做法: package main import
阅读全文
摘要:前端=>https =>后端=> DB 1.一个用户认证的网站开发,那些是敏感数据? 数据库密码 证书私钥 用户登录密码 2.在非信用网络之间进行敏感数据传输必须采用安全传输通道或者加密后传输,有标准协议规定的除外。 1.base64,hex 编码 2.sha256 哈希 3. pdkdf2 密码派
阅读全文
摘要:Example: mkdir $GOPATH/src/gotest/ touch go_test.go package gotest import "testing" var time string var version string func TestBuild(t *testing.T) {
阅读全文
摘要:1.测试组网 一台主节点master部署k8s,mef-center组件,cloud core 7台服务器模拟边缘节点部署docker,edge core 2.模拟边缘节点步骤 2.1 制作边缘容器镜像 拉取官网ubuntu镜像,更新镜像源,安装docker.io,安装 systemd 所需要的 I
阅读全文
摘要:k8s 1.22.12离线安装 k8s和kubeedge的cloudcore组件安装于云侧节点上首先导入需要的全部docker容器镜像:包括 k8s的组件7个(kube-images目录) 1 docker load < coredns_v1.8.4.tar 2 docker load < etcd
阅读全文
摘要:1.拉镜像 docker pull ubuntu 2.重新制作镜像 更新镜像源 sudo cp -a /etc/apt/sources.list /etc/apt/sources.list.bak sudo sed -i "s@http://.*archive.ubuntu.com@http://m
阅读全文