常量及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-28 18:32:35 tvelve代码家

LeetCode(2) 两数相加

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

Segmentfault 2020-10-28 17:32:34 xbdyhh

LeetCode(1) 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-28 11:32:33 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) ...阅读全文

如何让服务在流量暴增的情况下保持稳定输出

服务自适应降载保护设计设计目的保证系统不被过量请求拖垮在保证系统稳定的前提下,尽可能提供更高的吞吐量设计考虑因素如何衡量系统负载是否处于虚机或容器内,需要读取cgroup相关负载用1000m表示100%CPU,推荐使用800m表示系统高负载尽可能小的Overhead,不显著增加RT不考虑服务本身所依赖的DB或者缓存系统问题,这类问题通过熔断机制来解决机制设计计算CPU负载时使用滑动平均来降低CPU负载抖动带来的不稳定,关于滑动平均见参考资料滑动平均就是取之前连续N次值的近似平均,N取值可以通过超...阅读全文

Segmentfault 2020-10-28 10:32:33 kevinwan

根据proto一键生成rpc golang微服务

转自go-zero点击查看原文go-zero微服务库地址https://github.com/tal-tech/go-zeroRpc GenerationGoctl Rpc是goctl脚手架下的一个rpc服务代码生成模块,支持proto模板生成和rpc服务代码生成,通过此工具生成代码你只需要关注业务逻辑编写而不用去编写一些重复性的代码。这使得我们把精力重心放在业务上,从而加快了开发效率且降低了代码出错率。特性简单易用快速提升开发效率出错率低支持基于main proto作为相对路径的import支...阅读全文

Segmentfault 2020-10-26 11:32:35 Keson

还在手敲model代码,来体验一下go-zero代码自动生成吧!

转自go-zero点击查看原文go-zero微服务库地址https://github.com/tal-tech/go-zeroGoctl Modelgoctl model 为go-zero下的工具模块中的组件之一,目前支持识别mysql ddl进行model层代码生成,通过命令行或者idea插件(即将支持)可以有选择地生成带redis cache或者不带redis cache的代码逻辑。快速开始通过ddl生成goctl model mysql ddl -src="./sql/user.sql" ...阅读全文

Segmentfault 2020-10-26 10:32:33 Keson

数据结构与算法系列之链表操作全集(一)(GO)

前言这里不介绍链表是什么之类的概念,大家可以找一找相关的书籍或文章看看,本文主要是用GO来实现一些链表的操作说明:刚开始学习GO,可能用到的实现方法不是最简便的,意思表达出来了就可以,大家凑合着看【手动狗头】。如有错误,欢迎指正以下的代码均可从这里获取https://github.com/Rain-Life/learnGo收获:做链表的题,一定!一定!一定!要画图!要画图!要画图!不然,特别容易乱,很难一遍写出0 error,0 warning的链表代码链表单链表的基本操作链表通过指针将一组零散...阅读全文

Segmentfault 2020-10-27 14:32:32 书旅

go开发随感

2020年,我做了几个重大的决定,一是严格执行SCD食疗,二是坚持跑步,三是沉下心来好好学习python,三项截止到目前,我自己还算满意。 在连续几个月里,我坚持每天早上起来学习python至少一个小时,上班期间几乎都在写python脚本,本来今年的到农历年底的计划是接手公司一直被大家嫌弃的梯云纵和CMDB平台,可如今这个节骨眼刚好有机会转到运维平台开发的项目中去,我是0基础加入go语言开发项目,事已至此,接手梯云纵和cmdb的事情已变得不可能,但之前的几个月里,我写了很多的python脚本,比...阅读全文

51CTO博客 2020-10-21 21:24:22 楚国李园

go-zero 数据的流处理利器 fx

转自go-zero点击查看原文go-zero微服务库地址https://github.com/tal-tech/go-zero数据的流处理利器流处理(Stream processing)是一种计算机编程范式,其允许给定一个数据序列(流处理数据源),一系列数据操作(函数)被应用到流中的每个元素。同时流处理工具可以显著提高程序员的开发效率,允许他们编写有效、干净和简洁的代码。流数据处理在我们的日常工作中非常常见,举个例子,我们在业务开发中往往会记录许多业务日志,这些日志一般是先发送到Kafka,然后...阅读全文

Segmentfault 2020-10-26 09:32:32 Keson