Go语言中文网 为您找到相关结果 1078

Go 语言 2019 调查报告发布(内含 Go 语言图谱下载)

<关注公众号,回复 Go 即可下载清晰知识图谱> 对 Go 语言感兴趣但又不知从何学起的同学,可以参考一下 Go 语言系列文章: 为什么你要选择 Go? Go 面向失败编程 带着服务器编程金刚经走进 2020 年 敢问路在何方? Go 官方博客近日公布了 2019 年 Go 语言调查报告。本次调查收到的回复达到 10,975 份,约为去年的两倍。这些受访者的反馈意见将被选取用于改进 Go 语言的发展。 以下是 2019 年度的调查报告摘要: 此调查中,受访者的受众特征与 Stack Overflow 的受访者相似,因此这些结果在某种程度上可以代表更广泛的 Go 开发人员; 大多数受访者每天都要用到 Go 语言,并且该数字在逐年上升; Go 的使用仍集中在技术公司,但它同时也被用于越来越多的行...阅读全文

博文 2020-04-26 10:34:38 阿里巴巴云原生

golang语言渐入佳境[31]-错误处理

12345678910111213//1、创建error对象的方式1 err1 := errors.New("自己创建的错误!") fmt.Println(err1.Error()) fmt.Println(err1) fmt.Printf("err1的类型:%T\n", err1) //*errors.errorString fmt.Println("-----------------") //2、创建error对象的方式2 err2 := fmt.Errorf("错误的类型%d", 10) fmt.Println(err2.Error()) fmt.Println(err2) fmt.Printf("err2的类型:%T\n", err2) //*errors.errorString f...阅读全文

博文 2019-02-21 15:35:51 jonson_jackson

240.搜索二维矩阵 II

题目描述 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 示例: 现有矩阵 matrix 如下: [ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30] ] 给定 target = 5,返回 true。 给定 target = 20,返回 false。 思路 1.根据此二维矩阵给出的性质,可以从二维数组的右上角开始搜索,若target大于当前元素,我们的检索方向就向下,若小于,我们的检索方向就向左,若检索出界,还没找到结果,直...阅读全文

博文 2020-01-01 02:32:55 youzhihua

Go 译文之 defer、panic 和 recover

作者:Andrew Gerrand翻译:https://blog.golang.org/defer-panic-and-recoverGo有和其他语言一样常见的流程控制语句:if, for, switch, goto。同时也有go表达式来实现在不同的goroutine中运行代码(并发)。而今天我们将讨论的是go的异常控制流程:defer、panic和recover。Deferdefer语句会将函数推入到一个列表中。同时列表中的函数会在return语句执行后被调用。defer常常会被用来简化资源清理释放之类的操作。举个例子,我们来观察下下面这个函数,它的主要功能是打开两个文件并将一个文件的内容拷贝到另一个文件:func CopyFile(dstName, srcName string) (wr...阅读全文

博文 2019-06-09 09:52:37 波罗学​

Go语言入门(四)Map&函数

map&函数 map类型 map的申明和定义 map是一个key-value的数据结构,是引用类型的数据结构,需要初始化 初始化的时候容量可以定义,也可以不定义 map必须初始化才能使用,否则会panic var a map[key的类型]value的类型 func defineMap() { var user map[string]int = make(map[string]int) user["abc"] = 38 fmt.Printf("user:%v\n",user) a := make(map[string]int) a["jack"] = 1001 a["handsome"] = 1002 a["shark"] = 1003 //根据key获取value fmt.Printf("...阅读全文

博文 2020-03-17 21:33:15 wx5b285b48ed74e

defer ,panic,recover

defer的执行顺序 多个defer出现的时候,它是一个“栈”的关系,也就是先进后出。一个函数中,写在前面的defer会比写在后面的defer调用的晚。 package main import "fmt" func main() { defer func1() defer func2() defer func3() } func func1() { fmt.Println("A") } func func2() { fmt.Println("B") } func func3() { fmt.Println("C") } //输出结果:C B A defer和return的先后顺序 return之后的语句先执行,defer后的语句后执行。 package main import "fmt" f...阅读全文

博文 2020-04-26 13:33:11 普朗tong

23. 一篇文章 说清楚 Go语言里的函数

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:http://golang.iswbm.com我的 Github:github.com/iswbm/GolangCodingTime 1. 关于函数 函数是基于功能或 逻辑进行封装的可复用的代码结构。将一段功能复杂、很长的一段代码封装成多个代码片段(即函数),有助于提高代码可读性和可维护性。 在 Go 语言中,函数可以分为两种: 带有名字的普通函数 没有名字的匿名函数 由于 Go语言是编译型语言,所以函数编写的顺...阅读全文

博文 2020-05-30 10:32:46 Python编程时光

golang reflect 反射包

基础类型描述 Type Kind type Kind uint 基础类型常量 const ( Invalid Kind = iota Bool Int Int8 Int16 Int32 Int64 Uint Uint8 Uint16 Uint32 Uint64 Uintptr Float32 Float64 Complex64 Complex128 Array Chan Func Interface Map Ptr Slice String Struct UnsafePointer ) func String 获取类型字符名称 func (k Kind) String() string intType := reflect.Int typeName := intType.String() /...阅读全文

博文 2019-07-30 03:32:39 直立猿

golang面试基础系列-range的坑(三)

在 Go 中,for range 用来遍历 slice, map, chan 等,使用频率很高,但遍历虽好用,却很容易踩坑,且看 demo 如下: 1. 只有一个返回值时,则第一个参数是 index package main import "fmt" func main() { s := []string{"a", "b", "c"} // 只有一个返回值:则第一个参数是index for v := range s { fmt.Println(v) } // 两个返回值 for i, v := range s { fmt.Println(i, v) } } 输出结果如下: 0 1 2 ============= 0 a 1 b 2 c 2. 遍历 map 为随机序输出,slice 为索引序输...阅读全文

博文 2019-07-21 20:02:37 热爱coding的稻草

Golang 学习笔记:函数

函数 在Go语言中,函数可以分为具名函数和匿名函数,包级函数一般是具名函数,具名函数是匿名函数的一种特例。函数也可以看成是封装好一系列语句的代码块,用以提高代码的模块度和复用率。 Go语言的函数属于“一等值,(first-class)”,满足以下特点: 函数本身可以被当成值传递 函数本身可以满足接口 支持匿名函数和闭包 函数调用 需求:定义两个函数,实现两数相加和两数相乘的功能,允许被main函数外部调用。 //定义一个小马函数实现两数相加功能 func Xiaoma(a int,b int)int{ sum := a + b fmt.Println("小马a+b:",sum) return sum //当有返回值语句时,谁调用就返回给谁 } //定义一个佳豪函数实现两数相乘功能 func ...阅读全文

博文 2020-06-03 13:32:43 sunlingbot

defer 链如何被遍历

去年开始写文章的第一篇就是关于 defer,名字比较文艺:《Golang 之轻松化解 defer 的温柔陷阱》,还被吐槽了。因为这篇文章,到《Go 夜读》讲了一期。不过当时纯粹是应用层面的,也还没有跳进 Go 源码这个大坑,文章看着比较清新,也没有大段的源码解析。 自从听了曹大在《Go 夜读》分享的 Go 汇编,以及研读了阿波张的 Go 调度器源码分析的文章后,各种源码、汇编满天飞…… 上次欧神写了一篇《Go GC 20 问》,全文也没有一行源码,整体读下来很畅快。今天这篇也来尝试一下这种写法,不过,我们先从一个小的主题开始:defer 链表是如何被遍历并执行的。 关于 defer 的源码分析文章,网络上也有很多。不过,很少有能完全说明白这个话题的,除了阿波张的。 我们知道,为了在退出函数前...阅读全文

博文 2020-03-23 21:46:11 qcrao-2018

Golang中defer、return、返回值之间执行顺序的坑

载自:https://studygolang.com/articles/4809 Go语言中延迟函数defer充当着 cry...catch 的重任,使用起来也非常简便,然而在实际应用中,很多gopher并没有真正搞明白defer、return和返回值之间的执行顺序,从而掉进坑中,今天我们就来揭开它的神秘面纱! 先来运行下面两段代码: A. 无名返回值的情况 package main import ( "fmt" ) func main() { fmt.Println("return:", a()) // 打印结果为 return: 0 } func a() int { var i int defer func() { i++ fmt.Println("defer2:", i) // 打印结...阅读全文

博文 2020-05-19 15:32:47 大菜狗RookieDog

让我们一起啃算法----搜索插入位置

搜索插入位置( Search-Insert-Position ) 题干: 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1: 输入: [1,3,5,6], 5 输入: 输出: 2示例 3: 输入: 输入: [1,3,5,6], 7 输入: 输出: 4示例 4: 输入: 输入: [1,3,5,6], 0 输入: 输出: 0来源:力扣 这题主要应用 二分查找 的思路来解题,题目是比较简单的,但是 二分查找 这个思路还是蛮重要的。 解题思路 一般使用 二分查找 都需要先对原数组进行排序,题中给到的数组是已经排序的,因此这一步可以省去。 二分查找 思路比较简单,首先初始化三个指针: left ...阅读全文

博文 2020-05-20 17:33:02 三斤和他的朋友们

Go关键字defer的特性

Go里面,流程控制语句中有一个defer的关键字,翻译过来就是延迟的意思。下面用代码说话。 func deferFunc() { defer fmt.Println("后打印") fmt.Println("先打印") } defer在函数执行完毕之后,才会执行,所以,我们经常在释放资源或异常处理等需要收尾的场景下会用到defer。 不过defer也有一些“坑”,大家需要注意一下。 func printNumbers() { for i := 0; i < 5; i++ { defer func() { fmt.Print(i) // 输出55555 }() } } 上面例子中,defer是在for循环全部执行完毕之后才会执行,所以i已经变成了5,正确做法是下面这样 func printNum...阅读全文

博文 2020-02-26 15:32:40 iuoui

Go 语言学习笔记-文件操作

打开、创建文件 创建文件 Create file, err := os.Create("F:/futureWeb/goLang/testFile.go") 参数:name。打开文件的路径:绝对路径、相对路径 目录分隔符:/ 文件不存在,则创建。文件存在,则将文件内容清空。 打开文件 Open 参数:name。打开文件的路径:绝对路径、相对路径 以只读方式打开文件。文件不存在,则打开失败。 f, err := os.Open("F:/futureWeb/goLang/testFile.go") 打开文件 OpenFile f, err := os.OpenFile("F:/futureWeb/goLang/testFile.go", os.O_RDONLY, 6) 参数1:name。打开文件的...阅读全文

博文 2020-04-12 19:32:42 梁坤同学

Lite语言——从入门到放弃(二)

github.com/kulics/lite​这次我们来看看 Lite 的函数和结构设计。 函数声明 在 Lite 中,函数声明的格式为 # id(->) {} # function(->) { # 函数逻辑 # a = 1 + 1 } 这是一个没有参数也没有返回值的函数。 函数的调用方式和其它大部分语言一样。 # 调用 # function() 参数 函数的参数定义与定义变量的方式一样,写在函数定义括号箭头前面部分,多个参数用逗号隔开。 # 声明参数 # processInt(x int, y int ->) { a = x + y } # 调用传参 # processInt(1, 2) 返回值 函数可以输出返回值,这样就可以将处理后的数据返回给调用者去使用。 函数的返回值定义与参数定义相...阅读全文

博文 2019-07-23 13:02:37 kulics

Go 每日一库之 sqlc

简介 在 Go 语言中编写数据库操作代码真的非常痛苦!database/sql标准库提供的都是比较底层的接口。我们需要编写大量重复的代码。大量的模板代码不仅写起来烦,而且还容易出错。有时候字段类型修改了一下,可能就需要改动很多地方;添加了一个新字段,之前使用select *查询语句的地方都要修改。如果有些地方有遗漏,可能就会造成运行时panic。即使使用 ORM 库,这些问题也不能完全解决!这时候,sqlc来了!sqlc可以根据我们编写的 SQL 语句生成类型安全的、地道的 Go 接口代码,我们要做的只是调用这些方法。 快速使用 先安装: $ go get github.com/kyleconroy/sqlc/cmd/sqlc 复制代码当然还有对应的数据库驱动: $ go get githu...阅读全文

博文 2020-05-02 12:35:18 darjun

DAY3 GOLANG(三)函数

函数func 函数名 (形参列表)(返回值类型列表){ 执行语句 return 返回值列表}如果返回多个值,(返回值类型列表)的小括号必须写如果返回值只有一个,(返回值类型列表)可以不写()形参列表:表示函数的输入函数中的语句:表示为了实现功能代码块函数可以有返回值,也可以没有范例func cal (n1 float64, n2 float64,operator byte) float64{ // n1,n2,operator 形参 var res float64 switch operator { case '+' : res = n1 + n2 case '-' : res = n1 - n2 case '*': res = n1*n2 case '/': res =n1/n2 defa...阅读全文

博文 2019-10-29 21:32:53 aside section._1OhGeD

Go 语言 2019 调查报告发布(内含 Go 语言图谱下载)

<关注公众号,回复 Go 即可下载清晰知识图谱> 对 Go 语言感兴趣但又不知从何学起的同学,可以参考一下 Go 语言系列文章: 为什么你要选择 Go? Go 面向失败编程 带着服务器编程金刚经走进 2020 年 敢问路在何方? Go 官方博客近日公布了 2019 年 Go 语言调查报告。本次调查收到的回复达到 10,975 份,约为去年的两倍。这些受访者的反馈意见将被选取用于改进 Go 语言的发展。 以下是 2019 年度的调查报告摘要: 此调查中,受访者的受众特征与 Stack Overflow 的受访者相似,因此这些结果在某种程度上可以代表更广泛的 Go 开发人员; 大多数受访者每天都要用到 Go 语言,并且该数字在逐年上升; Go 的使用仍集中在技术公司,但它同时也被用于越来越多的行...阅读全文

博文 2020-04-26 11:33:45 阿里巴巴云原生

Go context 学习笔记

golang 的 Context包,是专门用来简化对于处理单个请求的多个goroutine之间与请求域的数据、取消信号、截止时间等相关操作,这些操作可能涉及多个 API 调用。 比如有一个网络请求Request,每个Request都需要开启一个goroutine做一些事情,这些goroutine又可能会开启其他的goroutine。这样的话, 我们就可以通过Context,来跟踪这些goroutine,并且通过Context来控制他们的目的,这就是Go语言为我们提供的Context,中文可以称之为“上下文”。 另外一个实际例子是,在Go服务器程序中,每个请求都会有一个goroutine去处理。然而,处理程序往往还需要创建额外的goroutine去访问后端资源,比如数据库、RPC服务等。由于这...阅读全文

博文 2020-05-30 03:32:44 Jaycee88

11.函数

Go语言基础之函数 Golang 函数是组织好的、可重复使用的、用于执行指定任务的代码块。本文介绍了Go语言中函数的相关内容。 函数 Go语言中支持函数、匿名函数和闭包,并且函数在Go语言中属于“一等公民”。 函数定义 Go语言中定义函数使用func关键字,具体格式如下: func 函数名(参数)(返回值){ 函数体 } 其中: 函数名:由字母、数字、下划线组成。但函数名的第一个字母不能是数字。在同一个包内,函数名也称不能重名(包的概念详见后文)。 参数:参数由参数变量和参数变量的类型组成,多个参数之间使用,分隔。 返回值:返回值由返回值变量和其变量类型组成,也可以只写返回值的类型,多个返回值必须用()包裹,并用,分隔。 函数体:实现指定功能的代码块。 我们先来定义一个求两个数之和的函数: ...阅读全文

博文 2020-04-08 07:32:51 雪上霜

Golang筑基 —— 语言结构、语法篇

Goalng结构 Go 语言的基础组成有以下几个部分: 包声明 引入包 函数 变量 语句 & 表达式 注释 下面以代码示例说明: package main import "fmt" func main(){ //声明变量a var a string //给变量a赋值 a = "hello world!" //输出a fmt.Println(a) } package :包名,Golang中所有的文件都要有package,用于标记文件的内容属于哪个包;包分为两类main包和非main包,一个程序只能有一个main包。包之间不能交叉引用,类似于c/c++不能交叉引用.h文件。 import :引用的包,可以为自定义的包,也可以是系统包,fmt就是系统包,实现输出的功能 main:主函数,只有mai...阅读全文

博文 2020-01-07 19:32:43 技术修仙

go 函数 学习笔记

什么是函数有输入、输出,用来执行特定功能的代码块func functionnname([partmeternam type]) [return type] { // function body }函数的几种类型无参数返回值的函数有参数返回值的函数 defer 语句 1、无参数返回值的函数package main import "fmt" func functiontest1(a,b int) int { return a + b // 输出 15 } func main() { sum1 :=functiontest1(12,3) fmt.Println(sum1) } 2、有参数返回值的函数 多返回值package main import "fmt" func functiontest2(...阅读全文

博文 2020-04-17 19:33:12 水滴石川1

LeetCode1.两数之和

问题描述: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1] 解题思路: 1.暴力法 利用两层循环查找和为目标值的两个整数,并返回下标。 2.HashMap两层循环 先将数组中的值和下标作为key和value存到HashMap中,然后遍历数组,计算差值是否在HashMap中,若存在,返回对应两个目标值的下标。 注意:有缺陷,对于数组中存在相同元素,得到的下标,有问题。例如[3...阅读全文

博文 2020-05-26 19:32:41 xeniogd

让我们一起啃算法----两数之和

前言 工作一段时间之后,最大的感觉就是算法好像没什么用,确实不会算法也能胜任平常的工作,但是总觉得缺了点什么,所以最近抽空复习了以前刷的 Leetcode,希望在这里找到一群志同道合的人。 两数之和(Two Sum) 这是 LeetCode 的第一题,总体来说是比较简单的,题干如下: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。示例: 给定 nums = [2, 7, 11, 15],target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]来源:力扣 简单来说就是给定一个数组,让你找到和为 target 的两个元素的索引。 解题思路 主要有 两种解题思路 : 暴力...阅读全文

博文 2020-04-20 10:32:50 三斤和他的朋友们

23. 一篇文章 说清楚 Go语言里的函数

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:golang.iswbm.com 我的 Github:github.com/iswbm/GolangCodingTime 1. 关于函数 函数是基于功能或 逻辑进行封装的可复用的代码结构。将一段功能复杂、很长的一段代码封装成多个代码片段(即函数),有助于提高代码可读性和可维护性。 在 Go 语言中,函数可以分为两种: 带有名字的普通函数 没有名字的匿名函数 由于 Go语言是编译型语言,所以函数编写的顺序是无关紧要...阅读全文

博文 2020-05-31 13:34:30 王一白

Go随笔——Go复合数据类型

1.goto跳转package mainimport "fmt"func main() {total := 0index := 0max := 100START:index += 1total += indexif index == max {goto END}goro STARTEND:fmt.Println("total")}2.数组类型1)声明数组声明需要指定组成元素的类型以及存储元素的数量(长度)。在数组声明后。其长度不可修改,数组的每个元素会根据对应类型的零值进行初始化。var names [10]stringvar scores [10]int初始化元素names = []string{"1","2","3"} 空切片,已经初始化但是元素数量为0names = []string{...阅读全文

博文 2020-05-25 02:33:15 wujunqi1996