Golang标准库——text

scanner tabwriter template template/parse scanner scanner包提供对utf-8文本的token扫描服务。它会从一个io.Reader获取utf-8文本,通过对Scan方法的重复调用获取一个个token。为了兼容已有的工具,NUL字符不被接受。如果第一个字符是表示utf-8编码格式的BOM标记,会自动忽略该标记。 一般Scanner会跳过空白和Go注释,并会识别所有go语言规格的字面量。它可以定制为只识别这些字面量的一个子集,也可以识别不同的空...阅读全文

简书 2020-10-24 00:32:37 DevilRoshan

Golang 操作Excel文件

日常开发中会遇到处理Excel文件的相关操作,这里推荐一款应用比较广泛的操作Excel的开源工具Excelize。Excelize是一个用Go语言编写的库,提供了一组允许您写入和读取XLSX / XLSM / XLTM文件的功能。支持读写由Microsoft Excel™2007和更高版本生成的电子表格文档。通过高度兼容性支持复杂的组件,并提供了流式API,用于从工作表中生成或读取包含大量数据的数据。该库需要Go版本1.10或更高版本。可以使用go的内置文档工具查看完整的API文档,也可以在go...阅读全文

Segmentfault 2020-10-24 07:32:37 guyan0319

Linux的too many open files解析

Linux中如果一个进程打开文件或者socket连接过多,有没有及时处理和关闭掉文件或连接,当该进程打开文件的数量超过open files的数量时候,就会报too many open files的错误 Linux open files可以在进程级别限制 Linux 的open files 是在一个同一个进程里限制的,当然也有全局的限制(查看/proc/sys/fs/file-max文件),ulimit -a pid命令可以看到open files进程级别限制的大小。 如果当前open files...阅读全文

简书 2020-10-23 22:32:38 perfect6566

解决 open /usr/local/go/pkg/darwin_amd64/runtime/cgo.a: permission denied

话说今天新买一台Mac电脑,伴随着开箱的兴奋,哼着喜羊羊美羊羊的优雅小调,开始有条不紊的配置各种开发环境,轻车熟路的安装Go SDK和Golang IDE开发环境,配置好各种环境变量后,打开写了一个的项目,随手按下了Command + R键,眼角微眯嘴角微微上翘,准备享受项目极速编译的快感,然后在那一刹那,脸上的笑容僵硬了,只见一行错误跃然出现在屏幕上: go build runtime/cgo: copying /Users/richard.tao/Library/Caches/go-buil...阅读全文

Golang函数的使用

函数 在GO语言中,函数的基本组成为func关键字,函数名,参数列表,返回值,函数体和返回语句。 1. 函数的定义 首先,我们通过一个最简单的加法函数来进行说明 package mymath import "errors" func Add(a int, b int) (ret int, err error) { if a < 0 || b < 0 { //假定函数只支持两个非负数相加 err = errors.New("Should be non-negative numbers") retu...阅读全文

简书 2020-10-23 18:32:37 ShawnLee_123

常量及iota的简单用法

一,常量 介绍 常量是在编译时期创建的,即使当定义在函数内,并且只能是numbers,characters(runes),strings或者booleans。由于编译时的限制,定义它们的表达式必须是可由编译器求值的常量表达式。 常量表达式案例 1 << 4是一个常量表达式。 math.Sin(math.Pi/3)不是常量表达式,因为math.Sin是在运行时执行的。 二,iota的使用注意事项 官方介绍:在Go中,枚举常量的创建推荐使用iota,由于iota能够作为表达式的一部分且能够隐式的重复...阅读全文

简书 2020-10-23 15:32:40 YXWKY

函数调用栈

函数调用栈什么是函数调用栈函数是每一门编程语言中,不可缺少的部分。函数本质是一片成块的内存指令。而函数调用,除了基本的程序指令跳转外,还需要保存函数相关的上下文,也就是函数的参数,本地变量,返回参数,返回地址等。保存函数上下文的就是我们常说的函数栈。函数相互调用的栈结构,就是函数调用栈。函数调用栈用在何处函数调用栈是函数调用必不可少的组成部分。我们常说的协程,底层的实现原理,都是基于函数调用栈的。协程切换,就是不同的栈帧切换,同时保存相关的上下文,当然这里也有寄存器值的保存。C语言实现#incl...阅读全文

Segmentfault 2020-10-24 07:32:37 tvelve代码家

LeetCode(2) 两数相加

题目:给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。来源:力扣(LeetCode)思路一:拿到这道题,我的第一思路是先将链表的数字转化为int的形识,相加之后再进行一次向链表的转化(多少有些做无用功的感觉),代码如下:/** * Definition for singly-linked ...阅读全文

Segmentfault 2020-10-24 07:32:36 xbdyhh

LeetCode(一) TWO SUM

题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]方法一:func twoSum(nums []int, target int) []int { hashTable := map[i...阅读全文

Segmentfault 2020-10-24 07:32:36 xbdyhh

golang 数据库连接池

简介 本文介绍如何使用gorm 2 连接池的使用代码例子,该连接池支持Mysql、postgres、sqlite三种数据库。 安装依赖 go get gorm.io/gorm go get gorm.io/driver/mysql go get gorm.io/driver/postgres go get gorm.io/driver/sqlite 数据库配置文件 配置文件 { "database": { "name": "db1", "password": "123456", "user": ...阅读全文

简书 2020-10-23 07:32:38 Nick_4438

go开发入门

安装 官网下载安装包安装go lang 国内网站下载go lang 配置使用国内七牛云的 go module 镜像,具体方法如下: 其他地址: http://mirrors.ustc.edu.cn/golang/ # unset GO111MODULE # go env -w GO111MODULE=on unset GOPROXY go env -w GOPROXY=https://goproxy.cn,direct export GO111MODULE=on GOPATH=$(go env ...阅读全文

简书 2020-10-23 07:32:38 Nick_4438

Golang标准库——syscall

syscall syscall包包含一个指向底层操作系统原语的接口。详细信息取决于基础系统,默认情况下,godoc将显示当前系统的syscall文档。如果要godoc显示其他系统的syscall文档,请将 GOARCH设置为所需的系统。例如,如果要在linux / amd64上查看freebsd / arm的文档,请将 GOARCH设置为arm。 syscall的主要用途是在其他可以为系统提供更轻便接口的软件包中,例如“ os”,“ time”和“ net”。如果可以,请使用这些软件包,而不要使...阅读全文

简书 2020-10-23 01:32:37 DevilRoshan

Golang标准库——testing

testing testing 提供对 Go 包的自动化测试的支持。通过 go test 命令,能够自动执行如下形式的任何函数: func TestXxx(*testing.T) 其中 Xxx 可以是任何字母数字字符串(但第一个字母不能是 [a-z]),用于识别测试例程。 在这些函数中,使用 Error, Fail 或相关方法来发出失败信号。 要编写一个新的测试套件,需要创建一个名称以 _test.go 结尾的文件,该文件包含 TestXxx 函数,如上所述。 将该文件放在与被测试的包相同的包中...阅读全文

简书 2020-10-23 01:32:37 DevilRoshan

关于践行

“一切学习的结果都建立在践行的基础上。没有践行的话,一个人只是学到了而已,实际上却没有做到——也根本没有机会做到”——《让时间陪你慢慢变富》记得前同事在群里表示今天学了什么,明天又学了什么。看她学这学那的,但还处在项目之外(还没面试到合意的项目组),我说,学这么宽范却没机会去实践,早晚会忘光光,因为我也曾经历过。Vue.js、Golang、Redis等等都是曾经我花费过一段时间去学习的,偏偏这些技术在当时的项目中没有用武之地(或者说,项目负责人不希望我们引入太多新东西,防止项目不可控),而自己私...阅读全文

简书 2020-10-23 00:32:37 凌风2312

Golang流程控制

流程控制 程序设计语言的流程控制语句,用于设定计算机执行的次序,建立程序的逻辑结构。可以说,流程控制 是整个程序的骨架。 1. Go语言的流程控制语句 条件语句:关键字为if else和else if 选择语句:关键字为switch、case和select 循环语句:关键字为for和range 跳转语句:关键字为goto 2. 条件语句 样例代码如下 if a < 5 { return 0 } else { return 1 } Go语言的条件语句,需要注意以下几点 条件语句不需要括号() 无论...阅读全文

简书 2020-10-22 18:32:38 ShawnLee_123

Golang中defer的实现原理

前言 在Go语言中,可以使用关键字defer向函数注册退出调用,即主函数退出时,defer后的函数才被调用。defer语句的作用是不管程序是否出现异常,均在函数退出时自动执行相关代码。 所以,defer后面的函数通常又叫做延迟函数 defer规则 1.延迟函数的参数在defer语句出现时就已经确定下来了 func a() { i := 0 defer fmt.Println(i) i++ return } 返回结果:0 defer语句中打印的变量i在defer出现时就已经拷贝了一份过来,所以后面...阅读全文

简书 2020-10-22 15:33:13 书生也爱羊

Golang 接口(多态补充2)

package main import ( "fmt" ) //空接口: 也是一个接口,但是该接口中没有任何的方法 //所以可以将任意类型作为该接口的实现 type A interface { } //1.定义一个接口 type USB interface { start() end() } //2.实现类 type Mouse struct { name string } func (m Mouse) start(){ fmt.Println("开始方法") } func (m Mouse) ...阅读全文