Golang语言系列-10-包】的更多相关文章

包 自定义包 package _0calc import ( "fmt" ) /* [Go语言的包] 在工程化的Go语言开发项目中,Go语言的源码复用是建立在包(package)基础之上的 本文介绍了Go语言中如何定义包.如何导出包的内容及如何导入其他包 [包介绍] 包(package)是多个Go源码的集合,是一种高级的代码复用方案,Go语言为我们提供了很多内置包 如fmt.os.io等 [定义包] 我们还可以根据自己的需要创建自己的包,一个包可以简单理解为一个存放 .go 文件的文件…
goroutine 并发 概念 package main import ( "fmt" "time" ) /* [Go语言中的并发编程 goroutine] [并发与并行] 并发:同一 时间段 内执行多个任务(你在用微信和两个女朋友聊天) 并行:同一 时刻 执行多个任务(你和你朋友都在用微信和女朋友聊天) [goroutine] Go语言的并发通过goroutine实现,goroutine类似于线程,属于用户态的线程,比内核态线程更轻量级,是由Go语言的运行时(ru…
常用内置包 net/http包 http请求和响应 http服务端 main.go文件 package main import ( "fmt" "io/ioutil" "net/http" ) // http server func f1(w http.ResponseWriter, r *http.Request) { defer r.Body.Close() //关闭连接 b, err := ioutil.ReadFile("./x…
Go语言简介 Go(又称Golang)是Google开发的一种静态强类型.编译型.并发型,并具有垃圾回收功能的编程语言. 罗伯特·格瑞史莫(Robert Griesemer),罗勃·派克(Rob Pike)及肯·汤普逊(Ken Thompson)于2007年9月开始设计Go,稍后Ian Lance Taylor.Russ Cox加入项目. Go是基于Inferno操作系统所开发的.Go于2009年11月正式宣布推出,成为开放源代码项目,并在Linux及Mac OS X平台上进行了实现,后来追加了…
数据库 MySQL 连接数据库 package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" //这里只要导入即可,使用的是这个包的 init() 函数 ) /* [Go语言操作MySQL] Go语言中内置的database/sql包提供了保证SQL或类SQL数据库的泛用接口,并不提供具体的数据库驱动. 使用database/sql包时必须注入(至少)一…
单元测试 字符串切割函数 package split_string import ( "fmt" "strings" ) // Split:切割字符串 // example: // abc, b --> [a c] func Split(str string, sep string) []string { // 优化代码,初始化的时候指定长度和容量,避免在append的时候去动态扩容,影响性能 var ret = make([]string, 0, strin…
结构体 自定义类型和类型别名的区别 package main import "fmt" // 自定义类型和类型别名的区别 // type后面跟的是类型 type myInt int //自定义类型 type youInt = int //类型别名 func main() { // 自定义类型 var n myInt n = 100 fmt.Println(n) //100 fmt.Printf("%T %d\n", n, n) //main.myInt 100 //…
函数 函数的基本概念 package main import ( "fmt" ) // 函数 // 函数存在的意义:函数能够让代码结构更加清晰,更简洁,能够让代码复用 // 函数是一段代码的封装 // 把一段逻辑抽象出来封装到一个函数中,给他起个名字,每次用它的时候直接用函数名调用即可 // 函数的基本定义 // func 函数名称(参数变量名称1 参数类型, 参数变量名称2 参数类型, ...) (返回值变量名称1 返回值类型, 返回值变量名称2 返回值类型, ...) func s…
Go语言常用数据类型 Go 语言中有丰富的数据类型,除了基本的整型.浮点型.布尔型.字符串.byte/rune 之外, 还有数组.切片.函数.map.通道(channel).结构体等. Go语言的基本类型和其他语言大同小异. 整型 整型分为:有符号整型.无符号整型 其中比较特殊的整型数据类型有3个 uint 无符号整型,它在32位的操作系统上就是uint32,在64位的操作系统上就是uint64 int 有符号整型, 它在32位的操作系统上就是int32,在64位的操作系统上就是int64 ui…
Gin框架 Gin框架简介 package main import ( "github.com/gin-gonic/gin" "io" "net/http" "os" ) // gin框架安装: go get -u github.com/gin-gonic/gin // Gin是一个golang的微框架,封装比较优雅,API友好,源码注释比较明确,具有快速灵活,容错方便等特点 // 对于golang而言,web框架的依赖要远比…
context上下文 控制子goroutine退出 全局变量方式 package main import ( "fmt" "sync" "time" ) // 如何优雅的控制子goroutine退出? // 全局变量方式 // 存在的问题: // 1.使用全局变量在跨包调用时不容易统一 // 2.如果f中再启动goroutine,就不太好控制了 var wg sync.WaitGroup var notify bool // 标志位,控制子gor…
网络编程 互联网协议介绍 互联网的核心是一系列协议,总称为"互联网协议"(Internet Protocol Suite),正是这一些协议规定了电脑如何连接和组网.我们理解了这些协议,就理解了互联网的原理.由于这些协议太过庞大和复杂,没有办法在这里一概而全,只能介绍一下我们日常开发中接触较多的几个协议 互联网分层模型 互联网的逻辑实现被分为好几层.每一层都有自己的功能,就像建筑物一样,每一层都靠下一层支持.用户接触到的只是最上面的那一层,根本不会感觉到下面的几层.要理解互联网就需要自下…
接口 接口的定义和实现 package main import "fmt" /* [接口] 接口(interface)定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节 在Go语言中接口(interface)是一种类型,一种抽象的类型,interface是一组method(方法)的集合 接口做的事情就像是定义一个协议(规则),只要一台机器有洗衣服和甩干的功能,我就称它为洗衣机.不关心属性(数据),只关心行为(方法). 为了保护你的Go语言职业生涯,请牢记接口(in…
Map数据类型和指针 Map数据类型 Map基本概念 package main import "fmt" // map // make()函数和new()函数的区别 // make和new都是用来申请内存的 // new很少用,一般用来给基本数据类型申请内存,`string`.`int`,返回的是对应类型的指针(*string.*int) // make是用来给`slice`.`map`.`chan`申请内存的,make函数返回的的是对应的这三个类型本身 func main() { v…
数组和切片 数组 概念 数组是同一种数据类型元素的集合:数组的长度必须是常量,并且长度是数组类型的一部分,一旦定义,长度不能变 例如:[5]int 和 [10]int 是不同的数组类型 使用时可以修改数组成员,但是数组大小长度不可变化 数组的初始化 package main import ( "fmt" ) func main() { var a1 [3]bool var a2 [4]bool var a122 [3]func() fmt.Printf("a1:%T a2:%…
运算符 Go语言内置的运算符有 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 算术运算符 package main import "fmt" func main() { var ( a = 5 b = 2 ) // 算术运算符 fmt.Println(a + b) // 加 fmt.Println(a - b) // 减 fmt.Println(a * b) // 乘 fmt.Println(a / b) // 除 fmt.Println(a % b) // 取余 // +…
Go语言流程控制语句 Go语言中最常用的流程控制语句有 if 和 for ,没有像Python中的while语句.另外,Go语言还有switch和goto语句,不过这两个主要是用来简化代码的,属于扩展类的流程控制,使用率没有if和for多. if语句 if语句的基本格式 if 表达式1 { 分支1 } else if 表达式2 { 分支2 } else { 分支3 } // 表达式1为true时,执行分支1 // 表达式1为false时.判断表达式2,为true则执行分支2 // 如果表达式1和…
Go语言的包(package) 一.包介绍 包(package)是多个Go源码的集合,是一种高级的代码复用方案,Go语言为我们提供了很多内置包,如fmt.os.io等. 二.定义包 我们还可以根据自己的需要创建自己的包.一个包可以简单理解为一个存放.go文件的文件夹. 该文件夹下面的所有go文件都要在代码的第一行添加如下代码,声明该文件归属的包. package 包名 注意事项: 一个文件夹下面直接包含的文件只能归属一个package,同样一个package的文件不能在多个文件夹下. 包名可以不…
发布系统 后端代码:https://gitee.com/lichengguo/yiihua_ops_go 前端代码:https://gitee.com/lichengguo/yiihua_ops_html…
代码托管在码云: https://gitee.com/lichengguo/my-blog-golang…
这是Solidity教程系列文章第10篇,带大家完全理解Solidity的函数修改器. Solidity系列完整的文章列表请查看分类-Solidity. 写在前面 Solidity 是以太坊智能合约编程语言,阅读本文前,你应该对以太坊.智能合约有所了解, 如果你还不了解,建议你先看以太坊是什么 欢迎订阅区块链技术专栏阅读更全面的分析文章. 函数修改器(Function Modifiers) 函数修改器(Modifiers)可以用来改变一个函数的行为.比如用于在函数执行前检查某种前置条件. 如果熟…
golang格式化输出-fmt包用法详解 注意:我在这里给出golang查询关于包的使用的地址:https://godoc.org    声明: 此片文章并非原创,大多数内容都是来自:https://godoc.org/fmt,通过谷歌翻译进行翻译而来.   import "fmt" fmt包实现了类似C语言printf和scanf的格式化I/O.格式化verb('verb')源自C语言但更简单. Printing verb: 通用: %v 值的默认格式表示.当输出结构体时,扩展标志(…
gopacket 是golang语言使用的网络数据抓取和分析的工具包. 本文简单介绍如何使用gopacket进行网络抓包. 下载gopacket # go get git@github.com:google/gopacket.git Demo 代码中,抓取与端口3306相关的数据,也就是mysql通信数据. package main import( "fmt" "net" "strings" "github.com/google/gop…
Golang学习系列:(一)介绍和安装 Java程序员带你来到Go的世界,让我们开始探索吧! Go是一种新的语言,一种并发的,带有垃圾回收的.快速编译的语言,它具有一下特点: 他可以在一台计算机上用几秒钟的时间编译一个大型的Go程序 Go为软件构造提供了一种模型,它使依赖分析更加容易,且避免了大部分C风格include文件与库的开头. Go是静态类型的语言,它的类型系统没有层级.因此用户不需要在定义类型之间的关系上花费时间,这样感觉起来比典型的面向对象语言更轻量级. Go完全是垃圾回收型的语言,…
Atitit.go语言golang语言的新的特性  attilax总结 1. 继承树less  动态接口1 1.1. 按照书中说的,Go语言具有以下的特征,下面我们分别来进行介绍.  q 自动垃圾回收  q2 1.2. 更丰富的内置类型 2 1.3. . 更丰富的内置类型2 1.4. 错误处理 defer3 1.5. 匿名函数和闭包  q3 1.6. 类型和接口  非侵入型”接口的概念.3 1.7. q 并发编程 4 1.8. q 反射 4 1.9. q 语言交互性4 1.10. 函数多返回值 …
Hello,各位小伙伴大家好,我是小栈君,最近一段时间我们将继续分享关于go语言基础系列,当然后期小栈君已经在筹划关于java.Python,数据分析.人工智能和大数据等相关系列文章.希望能和大家一起学习进步,相互提高. 好了,话不多说,我们开始今天的分享,今天分享的主题是关于go语言系列中的延迟调用和作用域相关的知识. 延迟调用defer 在go语言中关键字 defer ⽤于延迟一个函数或者方法(或者当前所创建的匿名函数)的执行.注意,defer语句只能出现在函数或方法的内部.所以我们常用作关…
一.为什么选VSCode 这个系列的初宗是带领公司的PHPer转Go,在正式写这篇博文前,咱们先说说Go有哪些主流的IDE 1.GoLand(收费) JetBrains出品必属精品,除了贵没有其它缺点,如果你用这款IDE,我只想说出门右转,不送!~~~~ 2.LiteIDE(免费)LiteIDE是一个简单的开源IDE.值得注意的是,它是Go语言2012年正式版发布的首个IDE,由Qt开发.由于它是为Golang直接设计的,LiteIDE为开发人员提供了许多有用的功能,包括可配置的构建命令,高级代…
文章引用自 Go语言内置包之strconv Go语言中strconv包实现了基本数据类型和其字符串表示的相互转换. strconv包 strconv包实现了基本数据类型与其字符串表示的转换,主要有以下常用函数: Atoi().Itia().parse系列.format系列.append系列. 更多函数请查看官方文档. string与int类型转换 这一组函数是我们平时编程中用的最多的. Atoi() Atoi()函数用于将字符串类型的整数转换为int类型,函数签名如下. func Atoi(s…
golang 自学系列(三)-- if,for,channel 一般情况下,if 语句跟大多数语言的 if 判断语句一样,根据一个 boolean 表达式结果来执行两个分支逻辑. 但凡总是有例外,go 语言还有这种写法: // 写法1 if i:= getID(); i < currentID { execute some logic } else { execute some other logic } // 写法2 var obj = map[string]interface{} if va…
00.一个JVM语言的诞生 由于方才才获悉博客园文章默认不放在首页的, 原创文章主要通过随笔显示, 所以将文章迁移到随笔; 这篇帖子将后续更新, 欢迎关注! 这段时间要忙着春招实习, 所以项目更新会慢一点, 语言组织也会比较随意, 毕竟时间有限, 没办法太过雕琢琢磨了. 源码github仓库, 如果这个系列对您有帮助, 请您给我一个小小的star! 本节提纲 写在前面 文章目录 先修技能/工具 Cva文法-grammar推导式 说明 Cva程序样例 写在前面 从屏幕前的你搜索到这篇博文开始, 我…