扣叮侠
这个作者很懒,什么都没留下…
展开
-
肝了 10 万字 ,Go 语言保姆级编程教程2021最新版(建议收藏)
10 万 + Go 语言保姆级教程,建议收藏原创 2021-06-13 13:17:31 · 18527 阅读 · 85 评论 -
Go语言指针
普通指针和C语言一样, 允许用一个变量来存放其它变量的地址, 这种专门用于存储其它变量地址的变量, 我们称之为指针变量和C语言一样, Go语言中的指针无论是什么类型占用内存都一样(32位4个字节, 64位8个字节)package mainimport ( "fmt" "unsafe")func main() { var p1 *int; var p2 *float64; var p3 *bool; fmt.Println(unsafe.Sizeof(p1)) // 8 f原创 2021-06-08 12:16:05 · 583 阅读 · 0 评论 -
Go 语言 Channel
多线程同步问题互斥锁互斥锁的本质是当一个goroutine访问的时候, 其它goroutine都不能访问这样就能实现资源同步, 但是在避免资源竞争的同时也降低了程序的并发性能. 程序由原来的并发执行变成了串行案例:有一个打印函数, 用于逐个打印字符串中的字符, 有两个人都开启了goroutine去打印如果没有添加互斥锁, 那么两个人都有机会输出自己的内容如果添加了互斥锁, 那么会先输出某一个的, 输出完毕之后再输出另外一个人的package mainimport ( "f原创 2021-06-09 12:30:38 · 409 阅读 · 1 评论 -
Go语言并发编程
并发编程基本概念学习并发编程之前我们需要脑补几个基础知识和思考一个问题什么是串行?什么是并行?什么是并发?什么是程序?什么是进程?什么是线程?什么是协程?什么是串行?串行就是按顺序执行, 就好比银行只有1个窗口, 有3个人要办事, 那么必须排队, 只有前面的人办完走人, 才能轮到你在计算机中, 同一时刻, 只能有一条指令, 在一个CPU上执行, 后面的指令必须等到前面指令执行完才能执行, 就是串行+什么是并行?并行就是同时执行, 就好比银行有3个窗口, 有3个人转载 2021-06-08 13:10:03 · 477 阅读 · 0 评论 -
Go语言文件操作
文件的打开和关闭和C语言一样, Go语言中操作文件也是通过一个FILE结构体type file struct { pfd poll.FD name string dirinfo *dirInfo }type File struct { *file // os specific}Open函数func Open(name string) (file *File, err error)Open打开一个文件用于读取Close函数func (f *File)原创 2021-06-08 13:03:42 · 370 阅读 · 0 评论 -
Go语言和C语言交叉访问
Go语言中调用C语言函数在Go语言开篇中我们已经知道, Go语言与C语言之间有着千丝万缕的关系, 甚至被称之为21世纪的C语言所以在Go与C语言互操作方面,Go更是提供了强大的支持。尤其是在Go中使用C,你甚至可以直接在Go源文件中编写C代码,这是其他语言所无法望其项背的格式:在import "C"之前通过单行注释或者通过多行注释编写C语言代码在import "C"之后编写Go语言代码在Go语言代码中通过C.函数名称() 调用C语言代码即可注意: import "C"和前面的注释之间不能出原创 2021-06-08 12:56:11 · 472 阅读 · 0 评论 -
Go语言字符串和正则表达式
字符串相关方法获取字符串长度注意: Go语言编码方式是UTF-8,在UTF-8中一个汉字占3个字节package mainimport "fmt"func main() { str1 := "lnj" fmt.Println(len(str1)) // 3 str2 := "lnj李南江" fmt.Println(len(str2)) // 12}如果字符串中包含中文, 又想精确的计算字符串中字符的个数而不是占用的字节, 那么必须先将字符串转换为rune类型数组Go语原创 2021-06-08 12:50:41 · 566 阅读 · 0 评论 -
Go语言异常处理
异常处理程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常golang中提供了两种处理异常的方式一种是程序发生异常时, 将异常信息反馈给使用者一种是程序发生异常时, 立刻退出终止程序继续运行打印异常信息Go语言中提供了两种创建异常信息的方式方式一: 通过fmt包中的Errorf函数创建错误信息, 然后打印package mainimport "fmt"func main() { // 1.创建错误信息 var err error = f原创 2021-06-08 12:47:07 · 883 阅读 · 0 评论 -
Go语言面向对象
面向对象基本概念面向对象思想面向对象(Object Oriented,OO)是软件开发方法面向对象是一种对现实世界抽象的理解,是计算机编程技术发展到一定阶段后的产物Object Oriented Programming-OOP ——面向对象编程面向对象和面向过程区别面向对象是相对面向过程而言面向对象和面向过程都是一种思想面向过程强调的是功能行为关注的是解决问题需要哪些步骤回想下前面我们完成一个需求的步骤:首先搞清楚我们要做什么然后分析怎么做最后我用代原创 2021-06-08 12:22:09 · 477 阅读 · 0 评论 -
Go方法和接口
方法Go语言中的方法其实就是一个特殊函数, 只不过这个函数是和某种属性类型绑定在一起的而已Go语言中的方法一般用于将函数和结构体绑定在一起, 让结构体除了能够保存数据外还能具备某些行为将函数和数据类型绑定的格式只需要在函数名称前面加上(接收者 数据类型), 即可将函数和某种数据类型绑定在一起func (接收者 数据类型)方法名称(形参列表)(返回值列表){ 方法体}示例: 给结构体添加一个方法,此时结构体除了可以保存数据,还具备说出自己名字和年龄的行为packa原创 2021-06-08 12:17:25 · 394 阅读 · 0 评论 -
Go语言字典和结构体
map(字典、映射)map翻译过来就是字典或者映射, 可以把map看做是切片的升级版切片是用来存储一组相同类型的数据的, map也是用来存储一组相同类型的数据的在切片中我们可以通过索引获取对应的元素, 在map中我们可以通过key获取对应的元素切片的索引是系统自动生成的,从0开始递增. map中的key需要我们自己指定只要是可以做==、!=判断的数据类型都可以作为key(数值类型、字符串、数组、指针、结构体、接口)map的key的数据类型不能是:slice、map、functionmap原创 2021-06-08 12:12:55 · 705 阅读 · 0 评论 -
Go语言数组和切片
数组和C语言一样,Go语言中也有数组的概念, Go语言中的数组也是用于保存一组相同类型的数据和C语言一样,Go语言中的数组也分为一维数组和多维数组一维数组格式:var arr [元素个数]数据类型和C语言中数组不同, Go语言中数组定义之后就有默认的初始值默认初始值就是保存数据类型的默认值(零值)package mainimport "fmt"func main() { // 1.定义一个数组 var arr [3]int // 2.打印数组 f原创 2021-06-08 12:10:13 · 360 阅读 · 0 评论 -
Go语言函数
函数Go语言和C语言一样也有函数的概念, Go语言中函数除了定义格式和不用声明以外,其它方面几乎和C语言一模一样格式:func 函数名称(形参列表)(返回值列表){ 函数体;}无参数无返回值函数func say() { fmt.Println("Hello World!!!")}有参数无返回值函数func say(name string) { fmt.Println("Hello ", name)}无参数有返回值函数func sum() int原创 2021-06-07 12:06:44 · 321 阅读 · 0 评论 -
Go语言流程控制
Go语言流程控制基本概念Go语言流程控制和C语言一样, 也有三大流程控制结构顺序结构(默认结构)选择结构(if / switch)循环结构(for)选择结构if和C语言不同的的是条件表达式的值必须是布尔类型(Go语言中没有非零即真的概念)条件表达式前面可以添加初始化语句不需要编写圆括号左大括号必须和条件语句在同一行第一种格式:条件表达式结果为true,那么执行if后面{}中代码if 初始化语句; 条件表达式{ 语句块;}package ma原创 2021-06-07 12:01:18 · 388 阅读 · 0 评论 -
Go语言运算符
算数运算符算数运算符和C语言几乎一样运算符描述实例+相加A + B-相减A - B*相乘A * B/相除B / A%求余B % A++自增A++–自减A–注意点:只有相同类型的数据才能进行运算package mainimport "fmt"int main(){ var num1 int32 = 10 //var num2 int64 = num1 // 类型不同不能进行赋值运算 va原创 2021-06-07 11:50:38 · 310 阅读 · 0 评论 -
Go语言命令行参数
go命令行操作指令标准go语言项目文件目录格式项目文件夹就是GOPATH指向的文件夹src文件夹是专门用于存放源码文件的main文件夹是专门用于存储package main包相关源码文件的其它文件夹是专门用于存储除package main包以外源码文件的bin文件夹是专门用于存储编译之后的可执行程序的pag文件夹是专门用于存储编译之后的.a文件的|—项目文件夹-----------|--------src文件夹-----------------------------|原创 2021-06-07 11:03:12 · 966 阅读 · 0 评论 -
Go 语言输入输出函数
Go语言fmt包实现了类似C语言printf和scanf的格式化I/O, 格式化动作源自C语言但更简单##输出函数func Printf(format string, a …interface{}) (n int, err error)和C语言用法几乎一模一样, 只不过新增了一些格式化符号package mainimport "fmt"func main() { name := "lnj" age := 33 fmt.Printf("name = %s, age =.原创 2021-06-06 22:06:46 · 636 阅读 · 1 评论 -
Go语言常量和变量
Go语言数据类型Go语言本质是用C语言编写的一套高级开发语言, 所以Go语言中的数据类型大部分都是由C语言演变而来的C语言数据类型Go语言数据类型C语言各数据类型占用内存空间类型32位编译器64位编译器char11int44float44double88short22long48long long88void*48Go语言各数据类型占用内存空间类型32位编原创 2021-06-06 21:46:37 · 405 阅读 · 0 评论 -
Go语言关键字和标识符
关键字Go语言中的关键字和C语言中的关键字的含义样, 是指被Go语言赋予特殊含义的单词Go语言中关键字的特征和C语言也一样全部都是小写在开发工具中会显示特殊颜色Go语言中关键字的注意点和C语言也一样因为关键字在C语言中有特殊的含义, 所以不能用作变量名、函数名等C语言关键字和Go语言关键字对比C语言中一共有32个关键字12345678ifelseswitchcasedefaultbreakreturngotodow原创 2021-06-06 21:31:01 · 551 阅读 · 0 评论 -
go 语言最详细的入门教程
Go语言程序组成和C语言程序一样,Go语言程序也是由众多函数组成的和C语言程序一样,程序运行时系统会***自动调用***名称叫做***main的函数***和C语言程序一样,如果一个程序***没有主函数***,则这个程序***不具备运行能力***和C语言程序一样,一个Go语言程序***有且只能有一个主函数***Go语言程序主函数定义格式C语言main函数格式int main(int argc, const char * argv[]) { return 0;}Go语言m原创 2021-06-06 20:38:30 · 6903 阅读 · 0 评论 -
go 语言开发环境如何搭建?
Go语言SDK安装和配置什么是SDK软件开发工具包(外语首字母缩写:SDK、外语全称:**SoftwareDevelopmentKit)**一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合如果不安装SDK, 你可以编写Go语言代码, 但是你不能编译执行编写好的Go语言代码如何安装?***1.下载SDK安装包。***地址: https://golang.google.cn/dl/由于新版本一般不太稳定, 所以我们选择下载上一个版本原创 2021-06-06 19:51:32 · 695 阅读 · 9 评论 -
C语言与Go语言有什么区别?
源文件对比C语言源文件文件扩展名源类型.h头文件,存放代码声明.cC语言源文件,存放代码实现Go语言源文件文件扩展名源类型.goGo语言源文件,存放代码实现代码管理对比C语言中通过文件来管理代码想使用某一个函数时,只需要include导入对应的.h文件即可Go语言中通过包来管理代码Go语言没有.h文件的概念, 在Go中想使用某一个函数时, 只需要import导入对应的包即可C语言中函数、变量公私有管理原创 2021-06-06 19:36:50 · 5135 阅读 · 0 评论 -
Go 语言
什么是Go语言Go语言(Golang)是Google公司2009年推出的一门"高级编程言语", 目的是为了解决:"现有主流编程语言"明显***落后于硬件发展速度***的问题***不能合理利用多核CPU***的优势提升软件系统性能的问题软件复杂度越来越高, ***维护成本也越来越高***的问题企业开发中不得不在***快速开发和性能之间艰难抉择***的问题科普小知识:1.静态语言:1.1一般都需要通过编译器(compiler)将源代码翻译成机器码,之后才能执行。程序被编译之后无论是程原创 2021-06-06 19:26:24 · 635 阅读 · 0 评论