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

Go语言入门(五)结构体&练习

结构体&练习 结构体 定义 Go中的面向对象是通过 struct来实现的,struct是用户自定义的类型 //定义结构体 /定义结构体 type User struct { Name string Gender string Age int AvatarUrl string } func useStruct() { //初始化结构体1 var user1 User user1.Name = "jeson" user1.Gender = "male" user1.Age = 20 user1.AvatarUrl = "http://baidu.com" //初始化结构体2 user2 := User{ Name: "miky", Gender: "female", Age: 18, } fmt...阅读全文

博文 2020-03-26 23:33:12 wx5b285b48ed74e

编程语言的一些基础概念(三):面向对象

在前面两篇中,主要讲了函数式编程语言的一些基础概念。这篇是 Coursera Programming Languages, Part C 的总结,通过 Ruby 介绍面向对象编程里的一些概念。了解这些概念能让你在上手任何一门新的面向对象语言时,都更加得心应手。 虽然用的是 Ruby,但是不会涉及很深的 Ruby,即使不懂 Ruby,读下来应该没问题。对于已经了解面向对象编程的朋友,可以考虑直接跳到子类和继承那部分,或许你会有一些新的启发。 面向对象编程 & Ruby 面向对象编程(Object Oriented Programming)简称 OOP,像 Java,C++ 等语言的主要编程模式都是面向对象的。OOP 主要是通过 对象(Object) 来抽象表示,比如说平面上的一个点,可以抽象表...阅读全文

博文 2019-07-01 00:32:42 闭眼卖布

golang初探与命令源码分析

前段时间有群友在群里问一个go语言的问题: 就是有一个main.go的main函数里调用了另一个demo.go里的hello()函数。其中main.go和hello.go同属于main包。但是在main.go的目录下执行go run main.go却报hello函数没有定义的错: image 代码结构如下: **gopath ---- src** **----gohello** **----hello.go** ** ----main.go** main.go如下: package main import "fmt" func main() { fmt.Println("my name is main") hello() } hello.go如下: package main import "...阅读全文

博文 2019-10-18 01:32:53 aside section ._1OhGeD

前端工程师吐后端工程师(第九讲)——最不擅长的数据库操作

第八讲中我们介绍了如果使用Gin写一些常用的接口,本讲我们主要介绍一下数据库如何操作。这一讲没有具体页面,可能对于前端工程师会不太习惯。首先我们要单件一个mysql数据库环境。如果不会的话可以参考这个教程https://www.jianshu.com/p/3a0de5da49f3,在搭建完成MySQL,并且启动MySQL之后。数据的管理员账户名设置成root,数据库密码设置为00000000。因为后续我们在代码中使用的数据库相关代码,会以这个为准.我们可以通过mysql -h 127.0.0.1 -P 3306 -u root -p 000000000 指令来连接刚刚搭建在本机上的数据库。127.0.0.1为本机IP,3306为数据库具体端口,root为数据库用户名,000000000为数据...阅读全文

博文 2020-01-08 19:32:47 陈辰CC老师

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

第九章 九析带你轻松完爆 go - 切片 slice

系列文章:总目录索引:九析带你轻松完爆 go 系列教程目录1 前言2 切片的声明3 切片的初始化 3.1 先声明后初始化 3.2 声明并初始化4 切片和数组的关系 4.1 数组转化为切片 4.2 切片的长度 4.3 切片的容量 4.4 切片的切片1 前言 如果你对博客有任何疑问或者想更深入学习 go,请加微信群,我们一起进步:2 切片的声明 切片在 go 语言中是一种特殊的数据类型,你不要觉得它难学,你只需要将它看成一种特殊的数组类型即可。它跟数组区别在于,数组声明时需要指定长度,但切片并不指定长度。如下所示:package mainimport "fmt"func main() { var slice []int # 切片 var arr [2]int # 数组 fmt.Println(s...阅读全文

博文 2020-03-01 23:33:11 九析

12. Go 语言流程控制:defer 延迟语句

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:golang.iswbm.com 我的 Github:github.com/iswbm/GolangCodingTime Go里的流程控制方法还是挺丰富,整理了下有如下这么多种: if - else 条件语句 switch - case 选择语句 for - range 循环语句 goto 无条件跳转语句 defer 延迟执行 今天是最后一篇讲控制流程了,内容是 defer 延迟语句,这个在其他编程语言里好像没有...阅读全文

博文 2020-05-07 11:36:18 王一白

Go 语言学习笔记 -第4章复合数据类型

Go 语言学习笔记 -第4章 [toc] 复合数据类型 数组 Golang中操作数组或者序列化数据需要用到slice,程序中写作“[]" slice 指向数组的值,并且同时包含了长度信息 package main import "fmt" func main() { // list := []int{1, 2, 3, 4} list := [...]int{1, 2, 3, 4} fmt.Println(list) fmt.Printf("Type %T\n", list) for i := 0; i < len(list); i++ { fmt.Printf("list[%d]=%d\n", i, list[i]) } //重新切片s[low:high], low->(high-1) fm...阅读全文

博文 2020-01-09 15:32:41 Mark110

golang结构体

定义 结构体是由一系列具有相同类型或不同类型的数据构成的数据集合 结构体的定义 结构体定义需要使用 type 和 struct 语句。struct 语句定义一个新的数据类型,结构体中有一个或多个成员。type 语句设定了结构体的名称。结构体的格式如下: type struct_variable_type struct { member definition member definition ... member definition } 结构体声明格式: variable_name := structure_variable_type {value1, value2...valuen} 或 variable_name := structure_variable_type { key1: v...阅读全文

博文 2020-01-01 02:32:54 程序小白菜

第四章 九析带你轻松完爆 go - 常量使用

1 单行声明 常量单行声明使用的语法如下。常量声明的位置可以是全局(所有函数外部)、局部(函数内部)。// PI is for math caculateconst PI = 3.142 批量声明 批量声明的方法跟变量声明类似,语法如下:const ( MON = 1 TUD = 2 WEN = 3 )3 iota 使用 iota 是常量的初始值定义符。默认值是 0。但是如果在批量常量定义的时候,出现在第几行,值等于“行号-1”。3.1 依次递增 代码如下:const ( t1 = iota t2 t3) 输出结果:0123.2 嵌入匿名常量 匿名常量用 _ 表示,代码如下:const ( t1 = iota t2 _ t3) 输出结果:0133.3 批量声明中多次使用 代码如下:const...阅读全文

博文 2020-02-23 22:33:15 九析

string相关函数

len():内建函数,查找字符串长度。 如果字符串中有中文,需要将其转换为[]rune类型: r := []rune(str) for i:=0;i < len(r);i++{ fmt. Println(r[i]) } 将字符串转整数:v,ok := strconv.Atoi("2") 将整数转字符串:v,ok := strconv.Itoa(2) 将字符串转成[]byte: v := []byte("dd") 将数字转换为n进制为,返回字符串: v := strconv.FormatInt(123,2) 查找子串,返回bool类型:b := strings.Contains("abc","b") 查找子串的个数,返回整数类型:i := strings.Count("ehfos","e") ...阅读全文

博文 2020-05-14 21:33:04 雪上霜

ARTS 第1周 LeetCode 78 Subsets | Golang 二维 slice 注意事项 | Go 官网文档

ARTS ARTS 是陈浩(网名”左耳朵耗子“)在极客时间专栏里发起的一个活动,目的是通过分享的方式来坚持学习。 每人每周写一个 ARTS:Algorithm 是一道算法题,Review 是读一篇英文文章,Technique/Tips 是分享一个小技术,Share 是分享一个观点。 算法 LeetCode 78 Subsets & 90 Subsets II 先看一下题目要求。 78.Subsets Given a set of **distinct** integers, _nums_, return all possible subsets (the power set). Note: The solution set must not contain duplicate subsets...阅读全文

博文 2020-05-18 10:32:45 casmo澎湃哥

探究 Go 语言 defer 语句的三种机制

Golang 的 1.13 版本 与 1.14 版本对 defer 进行了两次优化,使得 defer 的性能开销在大部分场景下都得到大幅降低,其中到底经历了什么原理? 这是因为这两个版本对 defer 各加入了一项新的机制,使得 defer 语句在编译时,编译器会根据不同版本与情况,对每个 defer 选择不同的机制,以更轻量的方式运行调用。 堆上分配 在 Golang 1.13 之前的版本中,所有 defer 都是在堆上分配,该机制在编译时会进行两个步骤: 在 defer 语句的位置插入 runtime.deferproc,当被执行时,延迟调用会被保存为一个 _defer 记录,并将被延迟调用的入口地址及其参数复制保存,存入 Goroutine 的调用链表中。 在函数返回之前的位置插入 r...阅读全文

博文 2020-03-01 15:32:41 张凯强_zkqiang

Golang 学习笔记:程序结构

Go语言的程序元素 Go语言包含了五种程序符号,分别是标识符(identifier)、关键字(keyword)、运算符(operator)、分隔符(delimiter)与字面量(literal)。这五种程序元素组合成各种表达式和语句。 标识符标识符是用于标识变量、函数或任何用户自定义项目的名称(程序实体) 标识符可分为两类,一类是用户定义的标识符,作为程序实体存在;另一类是预定义标识符,它们在Go语言中的源代码被声明(如数据类型)。还有一个特殊的标识符,叫空标识符,记作 "_",一般用在变量声明与包的导入中。例如,在Go语言程序中,若存在一个没有使用的变量a,那么编译时就会报错,因为Go语言要求存在的程序实体必须被使用,这时就可以使用这样一句 _=a 的代码,编译器就会认为已经使用了变量a(...阅读全文

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

重新认识Go的Slice

开篇语 大多数时候我们都忘记了或者压根不知道slice是怎么工作的。大多数时候我们只是把slice当做动态数组来用。通过重新认识slice,我们可以一定程度上避免掉入slice的陷阱,并且更好的使用它。 参考资料有: Effective Go Go Slices: usage and internal 本文重点是代码例子,边动手边学习 回归本元: 什么是数组? Go中的数组(array)是一个固定大小的、单一类型的一个序列。 创建数组需要两个参数:size和type。 Array的size是类型的一部分 x := [5]int{1, 2, 3} y := [5]int{3, 2, 1} z := [5]int{1, 2, 3} fmt.Printf("x == y: %v\\n", x ==...阅读全文

博文 2020-03-23 19:32:46 麻瓜镇

Golang基础(一)| 基本类型

基本类型 整型 有符号整型:int8,int16,int32,int64,int 默认值:0 无符号整型:uint8,uint16,uint32,uint64,uint 默认值:0 特殊整型:rune,byte,uintptr 默认值:0 浮点型 浮点类型:float32,float64 默认值:0.0 复数类型:complex64 complex128 默认值:0+0i 布尔型 布尔型:bool 默认值:false 字符串 字符串:string 默认值:"" 复合类型 数组:[size]type 默认值:为数组type的默认值,例如[5]int的默认值为,[0,0,0,0,0] 结构体:type xxx struct{} 默认值:与数组类似,是其所有成员的默认值 引用类型 指针:*Type...阅读全文

博文 2020-02-24 21:32:54 youzhihua

探究 Go 语言 defer 语句的三种机制

Golang 的 1.13 版本 与 1.14 版本对 defer 进行了两次优化,使得 defer 的性能开销在大部分场景下都得到大幅降低,其中到底经历了什么原理? 这是因为这两个版本对 defer 各加入了一项新的机制,使得 defer 语句在编译时,编译器会根据不同版本与情况,对每个 defer 选择不同的机制,以更轻量的方式运行调用。 堆上分配 在 Golang 1.13 之前的版本中,所有 defer 都是在堆上分配,该机制在编译时会进行两个步骤: 在 defer 语句的位置插入 runtime.deferproc,当被执行时,延迟调用会被保存为一个 _defer 记录,并将被延迟调用的入口地址及其参数复制保存,存入 Goroutine 的调用链表中。 在函数返回之前的位置插入 r...阅读全文

博文 2020-03-01 14:34:39 张凯强zkqiang

Golang 基础(二)

常量常量使用关键字 const 定义,用于存储不会改变的变量。无法在程序运行过程中修改它的值。存储在常量中的数据只可以是布尔型、数字型(整数型,浮点型和复数)和字符串型。例如: 格式:const identifier [type] = value const Pi = 3.141592658 const a = 3 Go语言中,可以省略类型说明符 type ,Go的编译器可以根据变量的值来推断它的类型,例如: const a string = "abc" // 显式类型定义 const a := "abc" // 隐式类型定义 另外,未定义类型的常量会在必要时候根据上下文来获得相关类型,例如: var n int f(n + 5) // 无类型的数字型常量"5" 它的类型再这会变成int 常...阅读全文

5.Go 语言数据类型:数组与切片

Hi,大家好。 我是明哥,在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:http://golang.iswbm.com我的 Github:github.com/iswbm/GolangCodingTime 1. 数组 数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成。因为数组的长度是固定的,所以在Go语言中很少直接使用数组。 声明数组,并给该数组里的每个元素赋值(索引值的最小有效值和其他大多数语言一样是 0,不是1) // [3] 里的3 表示该数组的元...阅读全文

博文 2020-04-27 12:32:46 Python编程时光

learn go with tests 学习笔记(三) 指针和错误

知识点 接收者 type Circle struct { Radius float64 } func (c Circle) Area() float64 { return 0 } 声明方法的语法跟函数差不多,因为他们本身就很相似。唯一的不同是方法接收者的语法 func(receiverName ReceiverType) MethodName(args) 当方法被这种类型的变量调用时,数据的引用通过变量 receiverName 获得。在其他许多编程语言中这些被隐藏起来并且通过 this 来获得接收者。 把类型的第一个字母作为接收者变量是 Go 语言的一个惯例。 r Rectangle 断言优于逻辑 当测试用例不是一系列操作,而是事实的断言时,测试才清晰明了。 列表测试驱动 声明结构体以创建...阅读全文

博文 2020-06-02 17:32:51 硌手小石头

大神进阶之路:Python技巧小贴士

介绍 Python 炫酷功能(例如,变量解包,偏函数,枚举可迭代对象等)的文章层出不穷。但是还有很多 Python 的编程小技巧鲜被提及。因此,本文会试着介绍一些其它文章没有提到的小技巧,这些小技巧也是我平时会用到的的。让我们一探究竟吧! 整理字符串输入 整理用户输入的问题在编程过程中极为常见。通常情况下,将字符转换为小写或大写就够了,有时你可以使用正则表达式模块「Regex」完成这项工作。但是如果问题很复杂,可能有更好的方法来解决: 1. user_input = "This\nstring has\tsome whitespaces...\r\n" 3. character_map = { 4. ord('\n') : ' ', 5. ord('\t') : ' ', 6. ord('\...阅读全文

博文 2020-01-09 23:32:46 一条Python代码

5. Go语言中的数组与切片

文章首发自公众号:Go编程时光 《Go编程时光》,一个能带你学习 Go 语言的专栏,同时欢迎搜索我的同名公众号【Go编程时光】(排版精美更适合阅读),第一时间获取Go语言干货。 系列导读 1. 一文搞定Go语言开发环境的搭建 2. Go 语言中五种变量创建的方法 3. Go语言中的整型与浮点型 4. Go语言中byte、rune与字符串区别? 1.7 1. 数组 数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成。因为数组的长度是固定的,所以在Go语言中很少直接使用数组。 声明数组,并给该数组里的每个元素赋值(索引值的最小有效值和其他大多数语言一样是 0,不是1) // [3] 里的3 表示该数组的元素个数 var arr [3]int arr[0] = 1 ar...阅读全文

博文 2020-04-01 11:35:00 王一白

python3.8版本已经更新,数据分析师和数据开发者看过来

python3.8版本已经更新,数据分析师和数据开发者看过来 新版本python3.8已经发布 作为一个放弃java转投python很多年的数据开发者,已经好久没有更新python了,也很久没有关注python的一些新功能新特性了,去年把自己做的几个小项目更新到了python3.6,然后就一直没把精力放到这一块了。 今天因为安装一个第三方库失败,打算去官网看下python的更新情况,发现已经更新至python3.8.2了,那么就当机立断下载安装,顺便学习一下python3.8的新特性吧。 安装python3.8.2 windows下的安装很简单,直接下载msi安装文件双击就可以了,然后稍微配置一下环境变量。 Linux下稍微复杂一点,主要是因为没有合适的yum安装包,具体步骤如下: # 下载...阅读全文

博文 2020-04-08 07:32:44 数据驱动手记

Golang一些编译学习探讨

问题一:能介绍一下golang的包的概念么?答:golang程序是通过编译package来生成对应的可执行程序的,编译的入口就是main::main()。包分为两类,一类纪实可执行的包,就是你创建项目之后main.go。另一种是工具包。工具包自身是不可执行的,但是它会给可执行的包增加一些功能,从而起到扩展主应用的作用。当一个包被引用的时候,GO会使用包的声明把这个包创建为全局变量。在go中,一个包就是一个目录。问题二:介绍一下goroot路径的作用呗?答:goroot为go的安装路径,当安装完成了之后,他的作用就是goroot的src路径下为标准库的源码。他的第二个作用就是当执行go run. Go build go install命令的时候,需要去查找工具包的时候,会先在goroot目录下...阅读全文

【Golog】包

正文 package main import ( "fmt" "math/rand" ) import "math/cmplx" func main() { fmt.Printf("Now you have %g problems.\n", math.Sqrt(7)) } 这里这个头部有的这个package main有点像Java一样,这里的主函数入口func main()暂时没看到类型和返回值。 但是按照官网import支持两种方式一个是小括号,还有就是支持像python那样的一个一个import。感觉用小括号更好看吧。引入规则也是一样的可以引入包下的某部分如:math/rand。暂时不清楚能不能像c++一样指定自己在某个文件夹下的包。 可以看到这里的输出是类似c的那种输出形式。不知道有没...阅读全文

博文 2020-05-05 17:32:43 石渊友

Golang interface

1_CdjOgfolLt_GNJYBzI-1QQ.jpeg 接口概念 接口 即一组方法定义的集合,定义了对象的一组行为,由具体的类型实例实现具体的方法。换句话说,一个接口就是定义(规范或约束),而方法就是实现,接口的作用应该是将定义与实现分离,降低耦合度。习惯用“er”结尾来命名,例如“Reader”。接口与对象的关系是多对多,即一个对象可以实现多个接口,一个接口也可以被多个对象实现。 ​接口(interface) 是Go语言整个类型系统的基石,其他语言的接口是不同组件之间的契约的存在,对契约的实现是强制性的,必须显式声明实现了该接口,这类接口称之为“侵入式接口”。而Go语言的接口是隐式存在,只要实现了该接口的所有函数则代表已经实现了该接口,并不需要显式的接口声明。 接口的作用 ​接口是实现...阅读全文

博文 2020-04-09 18:32:49 frederick_hou

Go语言常量与变量初识

标识符和关键字 标识符 标识符只能以字母和_组成,并且只能以字母和_开头。 关键字 Go中有25个关键字: break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continue for import return var 变量 变量声明 变量需要先声明,再使用。其语法如下: var name string 其数据类型有: string,字符串 int,整型 bool,布尔型 上面这种是一个变量一个变量的声明,go也有批量声明方式: var ( name string age int isBoy boo...阅读全文

博文 2020-03-16 00:33:13 Uncle_Joker

探究 Go 语言 defer 语句的三种机制

Golang 的 1.13 版本 与 1.14 版本对 defer 进行了两次优化,使得 defer 的性能开销在大部分场景下都得到大幅降低,其中到底经历了什么原理? 这是因为这两个版本对 defer 各加入了一项新的机制,使得 defer 语句在编译时,编译器会根据不同版本与情况,对每个 defer 选择不同的机制,以更轻量的方式运行调用。 堆上分配 在 Golang 1.13 之前的版本中,所有 defer 都是在堆上分配,该机制在编译时会进行两个步骤: 在 defer 语句的位置插入 runtime.deferproc,当被执行时,延迟调用会被保存为一个 _defer 记录,并将被延迟调用的入口地址及其参数复制保存,存入 Goroutine 的调用链表中。 在函数返回之前的位置插入 r...阅读全文

博文 2020-03-01 14:32:38 张凯强

leetcode_384

Golang: 思路:实现不难,这里注意,go提供了库函数可以打乱数组,但这里依然使用了手写来实现 代码如下: type Solution struct { src []int } func Constructor(nums []int) Solution { return Solution{src:nums} } /** Resets the array to its original configuration and return it. */ func (this *Solution) Reset() []int { return this.src } /** Returns a random shuffling of the array. */ func (this *Soluti...阅读全文

博文 2020-04-04 14:32:51 淳属虚构

数据结构和算法(Golang实现)(1)简单入门Golang-前言

数据结构和算法在计算机科学里,有非常重要的地位。此系列文章尝试使用 Golang 编程语言来实现各种数据结构和算法,并且适当进行算法分析。 我们会先简单学习一下Golang,然后进入计算机程序世界的第一个大门。 系列文章首发于:https://goa.lenggirl.com。 简单入门Golang 我们只学Golang语言的一个子集,足以开展接下来数据结构和算法的实现即可。 一、前言 Golang语言是谷歌Google公司在2007年启动,并在2009年正式发布并开源的高级编程语言。开源地址:https://github.com/golang/go,官网地址:https://golang.org。 Golang语言语法简单,支持多平台交叉编译(Linux/Mac/Windows),支持内存...阅读全文

go学习笔记-init函数执行顺序分析

golang中有个神奇的函数init,该函数会在所有程序执行开始前被调用,每个包可以包含多个init函数,所有被编辑器识别到的init函数都会在main函数执行前被调用。通常被用来注册一个程序需要使用的依赖,如mysql注册,配置文件加载等。 在main包的使用 package main import "fmt" func main() { fmt.Println("这里是mian") } func init() { fmt.Println("这里是Init1") } func init() { fmt.Println("这里是Init2") } //输出结果 这里是Init1 这里是Init2 这里是main 一个很简单的示例,可以看到init函数是在main函数执行之前被执行的,并且一个...阅读全文

博文 2020-01-15 09:32:42 旧梦发癫

leetcode_811

Golang: 思路:这题是字符串处理吧,没啥好说的,但是这里我的代码需要精简一下,Count函数那里,有多余的时间复杂度。 代码如下: func subdomainVisits(cpdomains []string) []string { mp:=make(map[string]int) for _,v:=range cpdomains{ flds:=strings.Fields(v) count,_:=strconv.Atoi(flds[0]) mp[flds[1]]+=count temp:=flds[1] for strings.Count(temp,".")>0 { temp=temp[strings.Index(temp,".")+1:] mp[temp]+=count } } ...阅读全文

博文 2020-02-27 07:32:39 淳属虚构

Go 语言单元测试实践

文链接:Go 语言单元测试实践 什么是软件测试? 软件测试是一个过程,该过程对软件(计算机程序)进行各种操作来发现软件错误。 为什么要进行软件测试? 进行软件测试可以帮助我们验证软件的各种功能正常,保证软件的正常工作从而提高软件质量。并且在实践中已被证明是颇有成效的。 测试驱动开发的由来: 一个从大量实践中得出的结论:人们发现在软件开发周期中,软件错误每进入到下一个阶段要修正它所付出的时间和人力会出人意表的翻上十倍。所以更早地进行软件测试可以更早地发现软件错误,从而大大减少后期修正的成本。后来又有人提出了测试驱动开发(TDD: Test-driven development),主体思想就是先编写测试程序,再实现程序功能。 下面就来介绍如何在 Go 语言中进行软件测试中较为重要的一环:单元测试...阅读全文

Golang 复合数据类型:切片

切片(slice) 切片的底层是数组实现的,可以按需自动增长和缩小。切片是数组的引用,因此是引用类型,不支持直接比较,只能和nil比较。切片的动态增长是通过内建函数append()来实现的,这个函数可以快速且高效地增长切片,也可以通过切片再次切割,缩小每一个切片的大小。 切片不存值,底层数组存值 切片指向一个底层数组 底层数组是占用一块连续的内存空间 创建数组切片 创建两个类型分别为 int 型和 string 型的切片,并初始化 func main(){ var slice1 []int var slice2 []string fmt.Println(slice1,slice2) fmt.Println(slice1 == nil) //true,没有开辟内存空间 fmt.Println(...阅读全文

博文 2020-06-03 15:32:39 sunlingbot

leetcode_819

Golang: 思路:这题的难点也在字符串的处理,但大部分的语言都提供类似的函数了,如果我们想提取字符串里的所有单词,使用正则是很好的途径,自己去分割字符串,处理标点符号,反而没什么意思。 代码如下: func mostCommonWord(paragraph string, banned []string) string { reg:=regexp.MustCompile("\\w+") mp1,mp2:=make(map[string]int),make(map[string]int) for _,v:=range banned{ mp1[v]=1 } if reg!=nil { strs:=reg.FindAllString(paragraph,-1) for _,v:=range s...阅读全文

博文 2020-02-27 09:32:41 淳属虚构

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

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

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

(二) Golang变量(1) 介绍和注意事项

1. 变量的介绍 1.1 变量的概念 变量相当于内存中一个数据存储空间的表示,你可以把变量看做是一个房间的门牌号,通过门牌号我们可以找到房间,同样的道理,通过变量名可以访问到变量(值)。 1.2 变量的使用步骤 声明变量(也叫:定义变量) 非变量赋值 使用变量 image.png 输出: image.png 2. 变量使用注意事项 1) 变量表示内存中的一个存储区域 2) 该区域有自己的名称(变量名)和类型(数据类型) image.png 3) Golang 变量使用的三种方式 (1) 第一种:指定变量类型,声明后若不赋值,使用默认值 func main() { //int 默认值为0 var i int fmt.Println("i=", i) } 输出 i= 0 (2) 第二种:根据值自...阅读全文

博文 2020-05-19 10:32:53 21号新秀_邓肯

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

0杂项

go mod initgo mod tidy 包依赖关系go mod download 源码下载gin中文快速入门https://gin-gonic.com/zh-cn/docs/quickstart/Jsoniter Jsoniter 的 Golang 版本可以比标准库(encoding/json)快 6 倍之多。之前在Gin中已经说到, Gin比Martini的效率高好多耶, 究其原因是因为使用了httprouter这个路由框架, httprouter的git地址是: httprouter源码. 今天稍微看了下httprouter的 实现原理, 其实就是使用了一个radix tree(前缀树)来管理请求的URL, 下面具体看看httprouter原理.https://www.cnblog...阅读全文

博文 2020-05-31 22:32:53 范佳伟_f5b7

如何在JavaScript中转换数据类型?

在JavaScript中,数据类型用于对一种特定类型的数据进行分类,确定可以分配给类型的值以及可以对其执行的操作。虽然由于类型强制,JavaScript会自动转换许多值,但为了达到预期的结果,通常最好在类型之间手动转换值。那么如何在JavaScript中转换数据类型?下面本篇文章就来给大家介绍一下,希望对大家有所帮助。 原文地址:如何在JavaScript中转换数据类型?JavaScript 变量可以转换为新变量或其他数据类型,分为两种情况:● 隐性转换:通过 JavaScript 自身自动转换● 显性转换:通过使用 JavaScript 函数进行转换隐性转换作为一种编程语言,javascript对意外值非常宽容。因此,JavaScript将尝试转换意外的值,而不是直接拒绝它们。这种隐性转换...阅读全文

博文 2020-03-25 23:32:43 yanghs

Golang 学习笔记:流程控制

条件语句 Go语言没有do-while语句,而for语句拥有更广泛的含义和用途switch语句也有进一步的扩展,支持类型判断和初始化子句等。 常见的流程控制的关键字有: defer:用于捕获异常和资源回收等工作 select:用于多支选择(配合通道使用) go:用于异步启动 goroutine 并执行特定函数 if判断语句 func main() { a := 15 if a < 20 { fmt.Println("a小于20") } //顺序执行 fmt.Println("a的值是", a) } if判断语句是最简单的判断,缺点在于无法返回false的情况,为了增加这一功能就要用到if-else语句。 if-else语句 func main() { a := 20 if a < 20 { ...阅读全文

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