golang
文章平均质量分 77
i0208
石匠
展开
-
Go语言 文件操作
首先获取文件名,借助os包中都得stat()函数来获取文件属性信息,在函数返回的文件属性中包含文件名和文件大小,Stat参数中name传入的是文件访问的绝对路径,FileInfo中的Name()函数可以将文件名单独提取出来。原创 2022-10-10 09:31:15 · 586 阅读 · 1 评论 -
golang 时间操作
time包。原创 2022-10-09 16:43:40 · 794 阅读 · 0 评论 -
golang error,panic,recover
import ("fmt""math")//求圆的面积if err!= nil{return}}//1.定义一个结构体,表示错误的信息}//2.结构体实现error接口中的Error方法return fmt.Sprintf("error:半径是%.2f,%s",e.radius,e.msg)}return 0,&areaError{"半径非法",radius}}}原创 2022-09-25 22:11:47 · 351 阅读 · 0 评论 -
Go语言 - 包(package)
在工程化的Go语言开发项目中,Go语言的源码复用是建立在包(package)基础之上的。本文介绍了Go语言中如何定义包、如何导出包的内容及如何导入其他包。Go语言的包(package)包介绍包(package)是多个Go源码的集合,是一种高级的代码复用方案,Go语言为我们提供了很多内置包,如fmt、os、io等。定义包我们还可以根据自己的需要创建自己的包。一个包可以简单理解为一...原创 2019-12-11 18:49:00 · 271 阅读 · 0 评论 -
Go语言 - 切片
引子因为数组的长度是固定的并且数组长度属于类型的一部分,所以数组有很多的局限性。 例如:func arraySum(x [3]int) int{ sum := 0 for _, v := range x{ sum = sum + v } return sum}这个求和函数只能接受[3]int类型,其他的都不支持。 再比如,a...原创 2019-11-24 19:09:00 · 361 阅读 · 0 评论 -
Go语言 - 结构体 | 方法
自定义类型和类型别名自定义类型在Go语言中有一些基本的数据类型,如string、整型、浮点型、布尔等数据类型, Go语言中可以使用type关键字来定义自定义类型。自定义类型是定义了一个全新的类型。我们可以基于内置的基本类型定义,也可以通过struct定义。例如:// MyInt 将定义为int类型type MyInt intfunc main() { var a ...原创 2019-12-10 20:59:00 · 256 阅读 · 0 评论 -
Go语言 - goroutine
并发与并行并发:同一时间段内执行多个任务(你在用微信和两个女朋友聊天)。并行:同一时刻执行多个任务(你和你朋友都在用微信和女朋友聊天)。Go语言的并发通过goroutine实现。goroutine类似于线程,属于用户态的线程,我们可以根据需要创建成千上万个goroutine并发工作。goroutine是由Go语言的运行时(runtime)调度完成,而线程是由操作系统调度完成。Go...原创 2019-12-13 15:00:00 · 495 阅读 · 0 评论 -
Go语言 - 接口
接口类型在Go语言中接口(interface)是一种类型,一种抽象的类型。interface是一组method的集合,是duck-type programming的一种体现。接口做的事情就像是定义一个协议(规则)举例:只要一台机器有洗衣服和甩干的功能,我就称它为洗衣机。不关心属性(数据),只关心行为(方法)为了保护你的Go语言职业生涯,请牢记接口(interface)是一种类...原创 2019-12-11 21:19:00 · 206 阅读 · 0 评论 -
Go语言 - 函数 | 作用域 | 匿名函数 | 闭包 | 内置函数
函数是组织好的、可重复使用的、用于执行指定任务的代码块。本文介绍了Go语言中函数的相关内容。介绍Go语言中支持函数、匿名函数和闭包,并且函数在Go语言中属于“一等公民”。函数可以赋值给变量函数可以被当做参数传入函数函数可以被调用函数定义Go语言中定义函数使用func关键字,具体格式如下:func 函数名(参数)(返回值){ 函数体}// 函数可以无参...原创 2019-11-26 20:56:00 · 300 阅读 · 0 评论 -
Go语言 - map
Go语言中提供的映射关系容器为map,其内部使用散列表(hash)实现。map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用。map内的键值对是无序的map定义Go语言中map的定义语法如下:map[KeyType]ValueTypeKeyType:表示键的类型。ValueType:表示键对应的值的类型。map类型...原创 2019-11-25 22:05:00 · 437 阅读 · 0 评论 -
Go语言 - 关于常用插件不能安装的处理办法
解决办法这里的是Windows的环境下的解决办法在GOPATH的src目录下面创建github.com\golang文件夹,若文件夹存请忽略本步骤在vs code终端执行: cd %GOPATH%\src\github.com\golang 这里的%GOPATH%就是GOPATH完成目录切换后,开始下载插件包:git clone https://github.com/go...原创 2019-11-22 20:23:00 · 348 阅读 · 0 评论 -
Go语言 - 流程控制 if else | for | switch case
流程控制流程控制是每种编程语言控制逻辑走向和执行次序的重要部分,流程控制可以说是一门语言的“经脉”。Go语言中最常用的流程控制:if | for | switch | goto// switch与goto主要是为了简化代码降低重复代码而生的结构,属于控制类的流程控制if else(分支结构)格式:if 表达式1 { 分支1} else if 表达式...原创 2019-11-23 20:17:00 · 339 阅读 · 0 评论 -
Go语言 - 结构体
自定义类型和类型别名自定义类型在Go语言中有一些基本的数据类型,如string、整型、浮点型、布尔等数据类型, Go语言中可以使用type关键字来定义自定义类型。自定义类型是定义了一个全新的类型。我们可以基于内置的基本类型定义,也可以通过struct定义。例如:// MyInt 将定义为int类型type MyInt intfunc main() { var a ...原创 2019-12-10 20:59:00 · 171 阅读 · 0 评论 -
Go语言 - 反射
reflect包在Go语言的反射机制中,任何接口值都由是一个具体类型和具体类型的值两部分组成的(我们在上一篇接口的博客中有介绍相关概念)。 在Go语言中反射的相关功能由内置的reflect包提供,任意接口值在反射中都可以理解为由reflect.Type和reflect.Value两部分组成,并且reflect包提供了reflect.TypeOf和reflect.ValueOf两个函数来...原创 2019-12-12 19:31:00 · 240 阅读 · 0 评论 -
Go语言 - 数组 | 多维数组
Array数组是同一种数据类型元素的集合。 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化。数组定义:var 数组变量名 [元素数量]T// 定义一个长度为3元素类型为int的数组avar a [3]int注意:package mainimport "fmt"func main() { var a [3]i...原创 2019-11-24 15:38:00 · 493 阅读 · 0 评论 -
Go语言 - 指针 | new | make
区别于C/C++中的指针,Go语言中的指针不能进行偏移和运算,是安全指针。要搞明白Go语言中的指针需要先知道3个概念:指针地址、指针类型和指针取值。概念任何程序数据载入内存后,在内存都有他们的地址,这就是指针。而为了保存一个数据在内存中的地址,我们就需要指针变量。比如,“人生苦短,Let's go”这句,我想把它写入程序中,程序一启动这句话是要加载到内存(假设内存地址0x123...原创 2019-11-29 19:52:00 · 580 阅读 · 1 评论 -
golang 格式化输出
在 Go 语言中,标准包fmt。原创 2022-09-13 22:12:38 · 833 阅读 · 0 评论 -
Go语言 Go的执行原理以及Go的命令
比如,本机安装Go语言的版本是1.x,那么go get命令会在该代码包的远程仓库中寻找名为“go1”的标签或者分支。如果不加这个-u标记,执行go get一个已有的代码包,会发现命令什么都不执行。这种情况下,go build 命令只是检查库源码文件的有效性,只会做检查性的编译,而不会输出任何结果文件。注意,go get命令会把当前的代码包下载到$GOPATH中的第一个工作区的src录中,并安装。go build编译命令源码文件,则会在该命令的执行目录中生成一个可执行文件,上面的例子也印证了这个过程。原创 2022-09-04 21:31:04 · 907 阅读 · 0 评论 -
Golang 第一个程序HelloWorld
import "fmt" 告诉 Go 编译器这个程序需要使用 fmt 包的函数,fmt 包实现了格式化 IO(输入/输出)的函数。别名操作的话调用包函数时前缀变成了我们的前缀,即f.Println("hello world")这个点操作的含义就是这个包导入之后在你调用这个包的函数时,你可以省略前缀的包名,也就是前面你调。_操作其实是引入该包,而不直接使用包里面的函数,而是调用了该包里面的init函数。GOROOT下的src文件夹下,以及GOPATH下的src文件夹下。原创 2022-09-04 21:02:03 · 555 阅读 · 0 评论 -
Go语言 环境搭建
1.先创建你的工作空间(Workspaces),官方建议目录$HOME/go。三、配置环境 .bashrc。解压版:解压到指定目录下。安装版:双加安装即可。原创 2022-09-04 20:39:28 · 1589 阅读 · 0 评论 -
Golang 调用 C/C++ 库
参考目录结构:|-importC| |-lib| | |-libvideo.dll| | |-libvideo.so| |-include| | |-video.h| | |-video.c| |-main.goC的代码如下:头文件 video.h//video.h#ifndef VIDEO_H#define VIDEO_Hvoid exeFFmpegCmd(); // 声明int sum(int a,int b);#endif源文件原创 2021-08-23 16:54:09 · 4925 阅读 · 0 评论 -
golang net/http编程
net/httpgo使用net/http包创建服务器,首先注册处理函数 http.HandleFunc(),设置回调函数handler,然后绑定服务器监听地址http.ListenAndServe()package mainimport ( "fmt" "net" "net/http" "os")func home(w http.ResponseWriter, r *http.Request) { // w 会写给客户端(浏览器)的数据 // r 从客户端(浏览器)读到的数原创 2021-08-05 00:02:59 · 336 阅读 · 0 评论 -
golang TCP 实现文件发送接收
首先获取文件名,借助os包中都得stat()函数来获取文件属性信息,在函数返回的文件属性中包含文件名和文件大小,Stat参数中name传入的是文件访问的绝对路径,FileInfo中的Name()函数可以将文件名单独提取出来os.Statfunc (f *File) Stat() (fi FileInfo, err error)Stat返回描述文件f的FileInfo类型值。如果出错,错误底层类型是*PathError。type FileInfotype FileInfo interf原创 2021-08-03 23:36:30 · 2199 阅读 · 0 评论 -
golang socket tcp udp
TCPsocket serverpackage mainimport ( "fmt" "net")func main() { // 一. 创建套接字socket // 指定server端使用的通信协议, 并绑定ip 和 port listener, err := net.Listen("tcp", "127.0.0.1:8384") if err != nil{ fmt.Println("server start err :", err) return } f原创 2021-08-01 19:46:22 · 596 阅读 · 0 评论 -
golang Json 序列化 反序列化
序列化结构体转jsonpackage mainimport ( "encoding/json" "fmt")// 注意: 结构体转json, 内部成员变量名一定要大写type IT struct { // 二次编码 Company string `json:"-"` // 定义json不序列化该字段 Subject []string `json:"subj"` // 定义json序列化后的键名为 subj IsOk bool `json:",string原创 2021-07-30 00:05:11 · 924 阅读 · 0 评论 -
go语言 互斥锁 读写锁
互斥锁每个资源都对应于一个可称为"互斥锁"的标记,这个标记用来保证在任意时刻,只能有一个协程(线程)访问该资源。其它的协程只能等待。互斥锁是传统并发编程对共享资源进行访问控制的主要手段,它由标准库sync中的Mutex结构体类型表示。sync.Mutex类型只有两个公开的指针方法,Lock和Unlock。Lock锁定当前的共享资源,Unlock进行解锁。在使用互斥锁时,一定要注意:对资源操作完成后,一定要解锁,否则会出现流程执行异常,死锁等问题。通常借助defer。锁定后,立即使用defer..原创 2021-07-28 23:51:01 · 690 阅读 · 0 评论 -
goland go程 channel select
go程补充: 每当有一个进程启动时,系统会自动打开三个文件:标准输入: stdin标准输出:stdout标准错误:stderr当运行结束,操作系统会自动关闭着三个文件import ( "fmt" "time")func foo() { fmt.Println("foo ") time.Sleep(time.Microsecond * 100)}func fun() { fmt.Println("fun ") time.Sleep(time.Microse原创 2021-07-28 15:51:57 · 56 阅读 · 0 评论