Go语言 专题
文章平均质量分 62
GO语言基础及实战
Small_Fish25
Stay Foolish Stay Hungry
展开
-
Golang 反射
反射基本概念Go语言提供了一种机制在运行时更新和检查变量的值、调用变量的方法和变量支持的内在操作,但是在编译时并不知道这些变量的具体类型,这种机制被称为反射。支持反射的语言(java、C#等,Go利用了reflect包)可以在程序编译期将变量的反射信息,如字段名称、类型信息、结构体信息等整合到可执行文件中,并给程序提供接口访问反射信息,这样就可以在程序运行期获取类型的反射信息,并且有能力修改它们。既然Go是利用了reflect包来访问程序的反射信息,那么我们就先看下reflect包来了解一下。r原创 2021-10-25 10:12:46 · 192 阅读 · 0 评论 -
Golang 并发基础 MPG线程模型介绍、协程goroutine和管道channel应用
协程:可以理解为轻量级的线程独立的栈空间共享程序堆空间调度由用户控制逻辑态,资源消耗相对小Golang的协程机制是重要的特点,可以轻松开启上万个协程。Go具有并发上的优势相对于其他编程语言goroutine调度模型:MPG模型基本介绍:M:操作系统的主线程P:协程执行的上下文环境(资源)G:协程import( "fmt" "strconv" "time")func test(){ for i := 0;i < 10;i++{ fmt.Prin原创 2021-10-22 12:37:41 · 496 阅读 · 0 评论 -
Golang 程序测试框架
注意事项:测试用例文件名必须以_test.go结尾,如:person_test.go测试用例函数必须以Test开头,比如person_test.go文件中的TestReStore测试函数的形参必须是t *testing.T一个测试用例文件中,可以有多个测试用例函数如果要测试单个文件一定要带上被测试的源文件go test -v person_test.go cal.go测试单个方法go test -v -test.run TestReStore测试命令:进入到对应原创 2021-10-20 17:40:05 · 645 阅读 · 0 评论 -
Golang 命令行参数读取
命令行参数os.Args存储了输入的命令行参数,args[0]是文件名fmt.Println("命令行的参数有:",len(os.Args))for i,v:= range os.Args{ fmt.Printf("args[%v]=%v\n",i,v)}flag包来解析命令行参数import ( "fmt" "flag")func main(){ //存储命令行的数据 var usr string var pwd string var host string var p原创 2021-10-19 18:46:11 · 705 阅读 · 0 评论 -
golang/Go语言 如何表示整数常量最大值最小值
golang的标准库里没有定义像C语言标准库limits.h中INT_MIN、INT_MAX这些常量变量。不过可以用位操作运算,轻松定义这些常量。无符号整型uint无符号整型最小值是0,其二进制表示的所有位都为0const UINT_MIN uint = 0 //00000000 因为32/64位太长,我们用8位来代替表示其最大值的二进制表示的所有位都为1,那么,const UINT_MAX = ^uint(0) //11111111有符号整型int有符号相比于无符号,其最高位为符号位:原创 2021-10-19 08:46:13 · 2038 阅读 · 0 评论 -
带你掌握Go语言面向对象!
面向对象Golang和传统的面向对象编程有所区别,并不是纯粹的面向对象语言。比如C++、java的面向对象都是基于类的,可是Go没有类,Go是基于struct来实现OOP特性的。Go去掉了传统的OOP语言的方法重载、构造函数、析构函数等,但是Go仍然有着面向对象编程的继承、封装和多态的特性,只是实现方式比较不同。我们既然说了Go是基于struct来实现OOP特性的,那么Go中的结构体是怎么样定义的呢?如下:type Structname struct{ field1 type //字段原创 2021-09-22 19:39:41 · 765 阅读 · 0 评论 -
Go语言map数据类型基本使用
Map基本语法:var map 变量名 map[keytype][valuetype]注意:声明不会分配内存,初始化需要make,分配内存后才能赋值和使用注意事项:map在使用前一定要makemap的key不能重复,如果重复了,以最后一个为准map的key-value是无序的make内置函数数目使用方式:func main(){ //方式1 var a map[string]int a = make(map[string]int,10) a["ywh"] = 21 a["原创 2021-09-20 22:49:37 · 268 阅读 · 0 评论 -
Go语言数组和切片总结
数组数组定义:var 数组名 [数组大小]数据类型初始化方式:var nums [3]int = [3]int{1,2,3}var nums = [3]int{1,2,3}var nums = [...]int{4,5,6}数组的地址可以通过数组名来获取 &intArr数组第一个元素的地址就是数组的首地址func main(){ var IntArr [3]int IntArr[0] = 1 IntArr[0] = 31 IntArr[0] = 6 fmt.Pr原创 2021-09-20 21:47:02 · 229 阅读 · 0 评论 -
Go函数使用注意事项总结(逃逸分析、匿名函数、闭包函数)
函数声明方式:func 函数名(形参列表)(返回值列表){ 执行语句 return 返回值列表}栈区:Go语言的栈区一般存储基本数据类型,编译器存在一个逃逸分析堆区:Go语言的堆区一般存储引用数据类型,编译器存在一个逃逸分析没有基础的童鞋可能会比较迷惑什么是逃逸分析?首先,你需要知道什么是内存逃逸。内存逃逸:在C、C++中,常常会忘记分配完内存后忘记释放,从而导致内存泄露,大量的内存泄露对程序来说是致命的。在C语言中,只要不是malloc、全局变量、静态局部变量的都是局部变量,原创 2021-09-20 16:11:47 · 469 阅读 · 0 评论 -
Go语言包机制详述
包包的本质:创建不同的文件夹,来存放程序文件。Go的每一个文件都是属于一个包的,也就是说Go是以包的形式来管理文件和项目目录结构的包的作用:区分相同文件的函数、变量等标识符当程序文件很多,包可以很好的管理项目控制函数、变量等的作用域基本语法:打包 package 包名引入包 import "包的路径"包管理目录结构:main.go代码内容:package mainimport ( "gocode/project_01/utils" //引入包,注意路径是从原创 2021-09-19 23:52:10 · 211 阅读 · 0 评论 -
Go语言初探
Go语言出现原因:随着系统复杂度越来越高,维护的成本越来越高,目前的编程语言有着风格不统一、计算能力不够、处理大并发不够好的特点,因此缺乏一个足够简洁高效的编程语言。比如Go语言为了风格统一,有着许多的要求,比如一个包中的变量、方法如果是希望被外部使用的,则要求必须首字母大写;还比如for循环{}的{必须和判断条件一行for i := 0;i < 10;i++{//必须要求一行 }同样的,计算机的硬件技术更新频繁,性能提升很快,主流的编程语言发展明显落后于硬件,不能够合理的原创 2021-09-19 16:34:57 · 100 阅读 · 0 评论 -
Golang(Go语言) 文件操作 总结
文件操作读取文件从文件中读取指定个数的字符,当输入len <= 0时代表读取全部内容func readFromFile(filename string,len int) (string,error){ left := len text := make([]byte,0,0) /*打开文件*/ file,err := os.Open(filename) /*打开文件失败则返回空内容及错误信息*/ if err != nil{ return string(text),errors原创 2021-09-12 20:50:07 · 217 阅读 · 0 评论 -
Golang(Go语言) strings包常用函数汇总
strings包字符串检索strings.Contains(str,substr string) bool判断字符串str是否包含子串substrstrings.ContainsAny(str,substr string) bool判断字符串str是否包含子串substr中的任何一个字符strings.Count(str,substr string) int返回字符串str包含substr的个数strings.HasPrefix(str,substr string) bool判断st原创 2021-09-12 18:42:26 · 653 阅读 · 0 评论 -
Golang 字符串和数值类型的相互转换
字符串和数值类型的相互转换实际开发中我们往往需要对一些常用的数据类型进行转换。熟练掌握能让我们编写程序时事半功倍。string和int类型之间的转换这个应该是平常开发中最容易遇到的类型转换了Itoa():int->stringItoa() 函数用于将 int 类型数据转换为对应的字符串类型package mainimport ( "fmt" "strconv")func main() { /*{不能单独占一行*/ num := 69 str := strconv.Itoa原创 2021-09-11 10:37:55 · 1591 阅读 · 0 评论 -
Windows上的Go环境配置及GoLand安装
安装和配置Golang前往Go软件安装下载相关版本Windows对应的版本为 go1.4.windows-amd64.msi,点击下载。双击.msi文件,开始安装。一路next到选择安装的目录这一步,默认是安装到 C 盘,也可以安装到其他盘,那么需要手动修改系统环境变量的值。假设安装到了E:\Go目录下。配置环境变量打开系统环境变量 右击我的电脑->属性->关于->高级系统设置->环境变量->系统变量,新建添加GOROOT和GOPATHs如图所示。原创 2021-09-08 19:59:57 · 1553 阅读 · 0 评论