10.Go语言基础之包

在工程化的GO语言开发项目中,GO语言的源码复用是建立在包(pakage)基础之上的。 不仅GO语言中有包的概念,别的语言中也是有包的概念的。 1.Go语言的包(package) 1.1包介绍 包(package)是多个Go源码的集合,是一种高级的代码复用方案,Go语言为我们提供了很多内置包,如fmt,os,io等。 1.2定义包 我们可以根据自己的需要创建自己的包。 一个包可以简单理解为一个存放.go文件的文件夹。该文件夹下面的所有go文件都要在代码的第一行添加如下代码,声明改文件归属的包。 ...阅读全文

51CTO博客 2020-02-04 22:22:02 DevOperater

9.Go语言基础之结构体

Go语言中没有类的概念,也不支持“类”的继承等面向对象的概念。 Go语言中通过结构体的内嵌再配合接口,比面向对象具有更高的扩展性和灵活性。 1.类型别名和自定义类型 1.1自定义类型 在Go语言中有一些基本的数据类型,如string,整型,浮点型,布尔等数据类型,Go语言中可以使用type关键字来定义自定义类型。 自定义类型是定义了一个全新的类型。我们可以基于内置的基本类型定义,也可以通过struct定义。 //将MyInt定义为int类型 type MyInt int 通过Type关键字的定义...阅读全文

51CTO博客 2020-02-04 19:04:22 DevOperater

Go 每日一库之 cast

简介 今天我们再来介绍 spf13 大神的另一个库cast。cast是一个小巧、实用的类型转换库,用于将一个类型转为另一个类型。最初开发cast是用在hugo中的。 快速使用 先安装: $ go get github.com/spf13/cast 后使用: package main import ( "fmt" "github.com/spf13/cast" ) func main() { // ToString fmt.Println(cast.ToString("leedarjun")) /...阅读全文

Segmentfault 2020-02-10 09:32:33 darjun

Linux 安装 golang 和 dep (附错两个误解决方法)

安装 Go 下载 在这里找想要安装的版本: https://golang.google.cn/dl/ 我下载了 1.13.7: wget https://dl.google.com/go/go1.13.7.linux-amd64.tar.gz 解压安装 tar -C /usr/local -xzf go1.13.7.linux-amd64.tar.gz 这一步需要 root 权限,非 root 用户要加 sudo sudo tar -C /usr/local -xzf go1.13.7.linu...阅读全文

Segmentfault 2020-02-08 18:32:32 sxwxs

上海职位:大数据基础设施研发工程师/数仓工程师/机器学习工程师/大数据存储研发工程师/数据业务全栈开发工程师, 视频面试,非996/997

上海职位:大数据基础设施研发工程师/数仓工程师/机器学习工程师/大数据存储研发工程师/数据业务全栈开发工程师,视频面试,非996/997大数据基础设施研发工程师工作职责1. 负责数据平台的系统高可用架构和规划;2. 设计并实现能够保障线上大规模集群的迭代、自动化运维平台;3. 负责量化数据服务的服务质量,提升服务SLA标准;4. 支持平台用户线上需求和解决用户遇到的各种问题;5. 升整体数据平台的运维管理效率;职位要求1. 有Hadoop集群的运维管理经验,3年以上相关工作经验;2. 精通Lin...阅读全文

简书 2020-02-04 19:33:07 IT猎头fancyfrees

golang-读写锁

写解锁会试图唤醒所有因欲进行的读锁定而堵塞的 goroutine 读解锁只会试图唤醒一个因欲进行写锁定而被堵塞的 goroutine package main import ( "fmt" "sync" "time" ) // 读写锁 /** sync.RWMutex 读写锁类型 提供的函数: 写锁:加锁/解锁 func (*RWMutex) Lock() func (RWmutex) UnLock() 读锁:加锁/解锁 func (*RWMutex) RLock() func (RWmutex...阅读全文

简书 2020-02-04 19:33:06 爱吃豆包

leetcode_61

Golang: 思路:先得出链表长度,然后就可以对k做处理,打个比方,链表长度5,那么k=6与k=1的情况就是一致的,但是我最后代码写的还是很复杂,不做参考吧。 代码如下: func rotateRight(head *ListNode, k int) *ListNode { if k==0||head==nil||head.Next==nil { return head } length,temp:=0,head for temp.Next!=nil{ temp=temp.Next lengt...阅读全文

简书 2020-02-04 19:33:06 淳属虚构

leetcode_73

Golang: 思路:两个map分别存储应该被清空的行和列,遍历二维数组得到map,然后遍历map,清空相应的行列,就这样。 代码如下: func setZeroes(matrix [][]int) { if len(matrix)==0 { return } col:=make(map[int]int) row:=make(map[int]int) for i:=0; i<len(matrix); i++ { for j:=0; j<len(matrix[0]); j++ { if matri...阅读全文

简书 2020-02-04 19:33:05 淳属虚构

leetcode_78

Golang: 思路:递归加回溯,emmm,就是在选择第n个时,可以选择nums[n],也可以选择空(即不填入),惭愧,这题是看了题解才理解的,太菜了。 代码如下: func subsets(nums []int) [][]int { var res [][]int if len(nums)==0 { return res } var temp []int getSubsets(&res,nums,&temp,0) return res } func getSubsets(res *[][]in...阅读全文

简书 2020-02-04 19:33:05 淳属虚构

Go语言入门教程(01):开发环境的搭建(Goland和VSCode)

教程首发于:微信公众号《Go编程时光》 1. 下载安装 Go语言 下载地址:https://golang.google.cn/dl/ image 下载完成后,直接双击 msi 文件进行安装,我习惯将软件安装在我的 E 盘下的 Program Files 目录下 image 后面就是一路点击 Next 即可,直到出现如下界面,安装完成。 image 2. 配置 Goland 环境 学习编程语言,使用一个称心的 IDE,可以帮你省去很多麻烦。 开发 Python 项目,我习惯使用 PyCharm,因...阅读全文

简书 2020-02-04 19:33:05 王炳明

Mac Golang环境部署

golang 安装&升级 1. 下载 [https://golang.google.cn/dl/](https://golang.google.cn/dl/) 需要的golang版本 2. [tar.gz](https://dl.google.com/go/go1.13.7.darwin-amd64.tar.gz) 格式的按照说明解压(pkg格式的双击就好,不多说) 3. 解压后tar包后,mac未安装过zsh 设置环境变量vim ~/.bash_profile, 有 zsh需要vim ~/.z...阅读全文

简书 2020-02-04 19:32:42 Cargador

Go语言开发环境的搭建(Goland和VSCode)

教程首发于:微信公众号《Go编程时光》 1. 下载安装 Go语言 下载地址:https://golang.google.cn/dl/ 下载完成后,直接双击 msi 文件进行安装,我习惯将软件安装在我的 E 盘下的 Program Files 目录下 后面就是一路点击 Next 即可,直到出现如下界面,安装完成。 2. 配置 Goland 环境 学习编程语言,使用一个称心的 IDE,可以帮你省去很多麻烦。 开发 Python 项目,我习惯使用 PyCharm,因为已经习惯了 JetBrains 风...阅读全文

Segmentfault 2020-02-08 16:32:34 Python编程时光

V8垃圾回收?看这篇就够了!

什么是内存管理 内存管理是控制和协调应用程序访问电脑内存的过程。这个过程是复杂的,对于我们来说,可以说相当于一个黑匣子。 当咱们的应用程序运行在某个操作系统中的时候,它访问电脑内存(RAM)来达成下列几个功能: 运行需要执行的字节码(代码) 存储程序运行时候所需的数据 加载程序运行所需的运行时环境 上面用来存储程序运行时所需的数据,就是下面要说的堆(heap)和栈(stack)。 栈(stack) 顾名思义,是一种先进后出的结构,参考一下餐盘的取和放。 image 俄罗斯套娃,我这不禁 imag...阅读全文

简书 2020-02-04 16:32:46 小雨小雨丶

leetcode_48

Golang: 思路:这题和螺旋输出数组那题很像,写完了提交,挂了。研究半天,幸亏没放弃我的代码,最终改出来了。思路和那题差不多,先动最外层的,再动里面的,每一层先挪动顶点,然后挪动每一行。 代码如下: func rotate(matrix [][]int) { if len(matrix)<=1 { return } m,n:=0,len(matrix)-1 temp:=make([]int,n-m+1) for m<n{ for i:=m; i<=n; i++ { temp[i]=matri...阅读全文

简书 2020-02-04 16:32:44 淳属虚构

Fx: Golang中的依赖注入(Dependency Injection)工具(翻译)

原文 Fx:一个易于使用的依赖注入(DI)框架。这个框架使Uber开发人员在创建新的Go应用程序非常容易。这篇文章涉及以下三个方面: 为什么你需要在Go应用程序中使用依赖注入 Fx框架介绍 一个利用Fx的示例应用程序 为什么你需要在Go应用程序中使用依赖注入 什么是依赖注入(DI)?下面来自Stack Overflow中的一个高分答案 依赖注入是5美分概念的25美元术语,[...]依赖注入意味着给对象一个实例变量,[...] 简而言之,DI是提供对象所需依赖项的技术。互联网上有大量关于DI的资源...阅读全文

简书 2020-02-04 16:32:44 smart99

golang刷LeetCode[0006]Z字形变换

题目 将一个给定的字符串根据给定的行数,以从上到下、从左到右进行 Z 字形排序。 比如输入字符串为 “LEETCODEISHIRING” 行数为3,排列如下: L C I R E T O E S I I G E D H N 之后,需要从左到右逐行读取,结果为 “LCIRETOESIIGEDHN” 示例1: 输入:s = "LEETCODEISHIRING", numRows = 3 输出: "LCIRETOESIIGEDHN" 示例2: 输入: s = "LEETCODEISHIRING", n...阅读全文

简书 2020-02-04 16:32:43 风云风雨

Go实现海量日志收集系统(三)

再次整理了一下这个日志收集系统的框,如下图 这次要实现的代码的整体逻辑为: 完整代码地址为: https://github.com/pythonsite/logagent etcd介绍 高可用的分布式key-value存储,可以用于配置共享和服务发现 类似的项目:zookeeper和consul 开发语言:go 接口:提供restful的接口,使用简单 实现算法:基于raft算法的强一致性,高可用的服务存储目录 etcd的应用场景: 服务发现和服务注册 配置中心(我们实现的日志收集客户端需要用到...阅读全文

简书 2020-02-04 16:32:43 51reboot

万丈高楼平地起|初识Go语言

0.前言从1月19号到今天已经12天没有更新文章了,这个春节显得格外特殊,突如其来的疫情打乱了我们的生活和工作。特殊时期我们可以积极转发有效信息、减少外出、避免出入拥挤场所、劝导家人朋友重视疫情保护自身、多陪伴父母家人共克时艰。北京窗外的阳光似乎还不错,很怀念之前自由自在的感觉,由衷希望早一天战胜疫情,大家摘掉口罩走上街头,露出灿烂脸庞,像往日一样拥抱自由,拥抱阳光。言归正传,之前计划写的TCP/IP协议栈系列文章再次跳票,但是大白准备双线作战再开一个Go语言专题,后续会推出系列文章,慢慢来大家...阅读全文

掘金 2020年02月04日 后端技术指南针

leetcode_860

Golang: 思路:注意这里并不可以把所有钱都收上来然后依次找掉,所以必须要一个人一个人的解决。这里用了一点贪心,即在处理20美元上,优先选择10+5的处理方法,其次是5+5+5。 闲话:写完这题我的简单题就完成了170道了,后面会转去挑一些中等题做。 代码如下: func lemonadeChange(bills []int) bool { if len(bills)==0{ return true } m5,m10:=0,0 for i:=0;i<len(bills);i++ { if b...阅读全文

简书 2020-02-04 11:32:41 淳属虚构

leetcode_60

Golang: 思路:最直白的思路自然是递归把所有解都拿出来,然后找到第k个,或者递归到第k个为止,但这么做这题就没有灵魂了啊!!!所以,数学方法解才是我们追求的东西。代码不想解释了,数学方法,先得到第n位的值,再递归得第n-1位的值,直到结束。 代码如下: func getPermutation(n int, k int) string { s:="" if n==0||k==0 { return s } arr:=make([]int,n+1) nums:=make([]int,n+1) t...阅读全文

简书 2020-02-04 11:32:41 淳属虚构