走进Go语言
文章平均质量分 77
走进golang
CodeMartain
有阳光 却感觉冷
展开
-
GO[一起来学习Go吧]
当标识符(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头,如:Group1,那么使用这种形式的标识符的对象就可以被外部包的代码所使用(客户端程序需要先导入这个包),这被称为导出(像面向对象语言中的。标识符如果以小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并且可用的(像面向对象语言中的 protected。开始转Go了,虽然java依旧很Nice,但是只掌握一门语言是不太好的,有时间学习一下GO。安装结束后会再去配置go的默认工程存放路径,习惯将工程放到非系统盘;......原创 2022-08-02 21:45:41 · 155 阅读 · 0 评论 -
Go语言的[GPM模型]
在go中,线程是运行Groutine的实体,调度器的功能是把可以运行的Groutine分配到工作线程上。原创 2023-09-10 20:56:54 · 405 阅读 · 0 评论 -
goLang笔记+beego框架
初始安装之后 GOPATH:Go开发相关的环境变量如下:GOROOT:GOROOT就是Go的安装目录,(类似于java的JDK)GOPATH:GOPATH是我们的工作空间,保存go项目代码和第三方依赖包GOPATH可以设置多个,其中,第一个将会是默认的包目录,使用 go get 下载的包都会在第一个path中的src目录下,使用 go install时,在哪个GOPATH中找到了这个包,就会在哪个GOPATH下的bin目录生成可执行文件go在编写之后要运行:以run file 的方式运行以run di原创 2023-09-06 14:01:29 · 643 阅读 · 0 评论 -
解决 beego上传文件时 报http: no such file 错误
解决 beego上传文件时 报http: no such file 错误。原创 2023-08-31 13:57:12 · 509 阅读 · 0 评论 -
解决 ‘bee‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。
解决 'bee' 不是内部或外部命令,也不是可运行的程序 或批处理文件。 网上教程说是缺少环境变量,又说什么需要自己收到beego的src文件夹下编译main.go。最近在学习go 中的beego框架,在下载依赖。最后在执行 bee new hello。忙活了半天,最后都以失败告终;原创 2023-08-25 15:18:42 · 552 阅读 · 1 评论 -
Go中同/异步与锁的应用~~sync包
在前面Go中channel文章中我们使用了time.Sleep()函数使得main函数的Goroutine阻塞至所有协程Goroutine结束,但这并不是一个很好的办法,因为我们实际应用中并不能准确知道协程什么时候结束(这里面要考虑服务器的性能,网络波动以及io等一系列因素;注意: Add()方法参数为正数时的调用应该在Wait()之前,否则如果等待的所有groutine都会被释放(或者没有被全部释放),那么可能只会等待很少的goroutine完成;//高32用于计数,低32为用于统计等待的数量。原创 2023-06-01 17:37:19 · 619 阅读 · 0 评论 -
Go语言WEB开发[html/template包]
Golang渲染template的时候,可以在模板文件中读取变量内的值并渲染到模板里。Golang的template支持range循环来遍历map、slice中的内容,语法格式如下所示。在模板中还可以定义变量,变量初始化之后就可以在go提供的模板文件中调用。Go语言提供了html/template包来支持模板渲染。对HTML模板提供了丰富的模板语言,主要用于Web应用程序。‘模板中使用{{/* comment */}} 来进行注释’golang模板支持if判断,在模板中要获取数据----原创 2023-05-27 09:56:18 · 808 阅读 · 0 评论 -
Go网络通信
就是启动一个服务端,监听一个addr,重写Handler的ServeHTTP(ResponseWriter, *Request),这里loginActionHandler参数跟ServeHTTP()参数ResponseWriter, *Request一致。内置的net/http包提供了最简洁的HTTP客户端实现方式,无须借助第三方网络通信库,就可以直接使用HTTP中用得最多的GET和POST方式请求数据。http.FileServer()返回的是一个Handler,当然我们也可以自己实现Handler;原创 2023-05-26 15:47:18 · 1067 阅读 · 0 评论 -
Go语言实现JDBC
由open()源代码可以看到,sql.Open()返回的sql.DB对象是并发安全的,即每次只能一个Goroutine使用一个,所以高并发下如果没有及时关闭不需要的连接,就会导致系统资源耗尽;我们可以看到代码的基本思路跟java一样,go是定义一个结构体用于接收数据库中的数据,然后我们需要掌握下面的几个函数用于处理数据库数据;Go提供了sql包,但是没有指定是哪一个数据库的,用于访问特定数据库的方法交给了数据库驱动实现;该包用来定义操作数据库的接口,这保证了无论使用哪种数据库,操作方式都是相同的;原创 2023-05-28 17:28:21 · 1374 阅读 · 0 评论 -
Go语言面向对象编程(核心)
在java中我们使用 class来封装对象的信息,在go中 ,由于go并不是一个纯面向对象的编程语言,go中使用结构体替代了 “class”,在结构体中,属于匿名结构体的字段称为提升字段,它们可以被访问,匿名结构体就像是该结构体的父类。匿名结构体就是没有名字的结构体,但是如果匿名结构体没有实例化,那么匿名是没有意义的(因为没有被分配内存)在Go中结构体的嵌套可以模拟面向对象编程中的 聚合关系和继承关系,其中继承关系在上面已经提到了;将一个结构体作为另一个结构体的属性(字段),这种结构就是结构体嵌套;原创 2023-05-21 21:53:41 · 500 阅读 · 0 评论 -
Go语言并发
此时main函数的Goroutine继续执行,如果helloworld()函数不能够在main函数的Goroutine执行完毕之前将任务处理完毕,那么就会发生helloworld()函数没有执行的样子;注意:使用go关键字创建协程时,被调用的函数往往没有返回值,如果函数有返回值,那么返回值会被忽略,那我们就是要返回值时,必须使用channel,通过channel把数据从中取出来;创建和启动主Goroutine,初始化操作,执行main函数,当main函数执行结束后,程序也就结束了;原创 2023-05-28 20:43:39 · 1047 阅读 · 0 评论 -
Go中的异常处理(基础)
自定义错误的实现步骤如下。• 定义一个结构体,表示自定义错误的类型。• 让自定义错误类型实现error接口:Error()string。• 定义一个返回error的函数。根据程序实际功能而定。代码demo//定义结构体 type errorDefine struct {reason string } //实现Error()方法 func(e errorDefine) Error() string {原创 2023-05-22 20:32:43 · 709 阅读 · 0 评论 -
Go对Json的支持[encoding/json]
Marshal使用以下与类型相关的默认编码:布尔值编码为JSON布尔值。浮点数、整数和数字值编码为JSON数字。字符串值编码为JSON字符串,强制为有效的UTF-8;用Unicode替换符文替换无效字节。这样JSON就可以安全地嵌入到HTML。原创 2023-05-27 15:22:36 · 1053 阅读 · 0 评论 -
Go语言文件I/O操作
在go中使用 FileInfo接口 定义了IO的一些函数。ReadLine()通过调用ReadSlice()方法实现,返回的也是缓存的切片。ReadLine()尝试返回一个单行数据,不包括行尾标记(\n或\r\n),如果在缓存中找不到行尾标记,则设置isPrefix为true,表示查找未完成,同时读出缓存中的数据并作为切片返回;只有在当前缓存中找到行尾标记,才将isPrefix设置为false,表示查找完成。可以多次调用ReadLine()来读出一行,返回的数据在下一次读取操作之前是有效的。如果ReadL原创 2023-05-24 15:41:05 · 961 阅读 · 0 评论 -
我的创作纪念日
没有期待的日子也过得顺顺利利。原创 2023-06-01 14:53:12 · 105 阅读 · 0 评论 -
Go常用API
go常用API:strings包(字符串处理)、strconv包(字符串格式转换)、regexp包(正则表达式)、time包(时间)、math包(数学公式)以及键盘输入。原创 2023-05-20 21:41:17 · 557 阅读 · 0 评论 -
研究一下延时队列(Java 与Go
DelayQueue即延迟队列,也就是一个按延迟时间从小到大出队的PriorityQueue。所谓延迟时间,就是“未来将要执行的时间”-“当前时间”。为此,放入DelayQueue中的元素,必须;(1)如果getDelay的返回值小于或等于0,则说明该元素到期,需要从队列中拿出来执行。(2)该接口首先继承了Comparable 接口,所以要实现该接口,必须实现Comparable 接口。具体来说,就是基于getDelay()的返回值比较两个元素的大小。直接上代码—>>原创 2022-08-31 21:38:05 · 183 阅读 · 0 评论 -
Go中赋值、转换、反射创建对象、调用方法
但是,Go使用interface实现的功能叫组合,Go是使用组合来实现的继承,说的更精确一点,是使用组合来代替的继承;在java中反射是可以获取继承关系,而go语言实际是不支持继承的,所以必须是相同的类型才能使用AssignableTo(),ConvertibleTo()简单来讲跟结构体的嵌套差不多,只不过这次是实现接口,从代码的实际应用来讲,实现接口是为了实现特定的目的,这个跟java中接口的实现的作用是差不多的功能;简单来看这种继承的方式实际就是结构体的嵌套(刚开始学,不知道这样理解是否正确)原创 2022-11-27 11:38:32 · 768 阅读 · 0 评论 -
Go中的泛型和反射以及序列化
我们接触过java的同学都会知道,java中的反射是怎么一回事---->>在运行期间去获得对象的类型信息以及其他一些信息;原创 2022-11-19 20:54:37 · 567 阅读 · 0 评论 -
Go的接口,闭包,异常捕获
errorCode string errorResult string } // 结构体实现Error接口 func(d DivideByZeroError) Error() string {errorCode : "error" , errorResult : "divide by zero" , } return - 1 , byZeroError //返回 float64 与error(这里有点问题,结果为-1时 } return a / b , nil } func main() {err!原创 2022-09-04 21:34:49 · 262 阅读 · 0 评论 -
Go中的函数
Go中的函数给我的感觉就是C中的函数,js中的函数,但是Go中的函数又有些不一样;首先回顾一下java中方法中的参数,有的是传的指针,有的是传是值的拷贝;因为切片的内部结构是 指针(引用),len 和cap。我们也可以在声明返回值的类型时将返回值声明好。不要好奇,因为他扩容了呗。这样做跟下面的区别----显而易见。举个例子就是 传的是切片。...原创 2022-08-29 21:30:41 · 244 阅读 · 0 评论 -
Go中的逻辑处理(if,switch),for循环,goto
在switch type 语句中case字句不能使用fallthrough。if可以嵌套,但是如果是多个判断条件,那么可以使用switch。switch -case-default 这个跟java类似;在if中声明的局部变量只是作用在if这个判断逻辑里,if句子中云粗包含一个分号常见的if语句的形式。上面的案例看到switch是不支持穿透的,这里提示要求是左侧应该是接口类型的数据类型。接口之后再去深入学习,先简单了解下—1,逻辑表达式中可以有变量或者常量。......原创 2022-08-21 22:37:56 · 367 阅读 · 0 评论 -
Go中的管道,结构体
的通讯方式,是不支持跨进程通信的,如果需要进程间通讯的话,可以使用Socket等网络方式。这是因为目前只有一个线程去管道里读取数据,多了的没办法拿走,此时会产生一个死锁出来;如果管道中没有数据,那么从管道中读取数据会导致程序阻塞,直到有数据–管道是Go语言在语言级别上提供的goroutine间的。go中的结构体是面向对象编程的一个关键点;1,使用range的方式,需要先关闭管道。管道一旦关闭,就不能再往里面添加数据了。管道底层是一个环形队列(先进先出);在运行阶段,go会直接抛一个异常。......原创 2022-08-16 22:00:57 · 504 阅读 · 0 评论 -
Go基本数据类型
type signal uint8 //定义一个信号量 type mmap map [ string ] string //定义一个map type add func(a , b int) int //定义函数 type man struct {//定义结构体 name string age int } type comp complex64每一种自定义类类型都可以有自己的方法,当我们给自定义类型赋值时(有的需要初始化),可以调用相应的方法;......原创 2022-08-11 21:59:17 · 2115 阅读 · 0 评论 -
Go常用命令与基础语法
先来看看go的命令有哪些: 命令: 会打开一个网址,来反馈bug,go build 命令:会将.go文件打包,打包后的是精简的代码,只包含用到的代码,对于没用到的不会被打包; 移除打包好的文件 查看go环境设置 : 格式化包下所有的代码格式将go文件加入gopath下的bin包中以便可以直接访问;这里gopath 是自己指定的,也可以是默认的,这要看自己的设置了;系统设置的得gopath环境变量 : 对当前包添加依赖并安装这些依赖 对静态代码做检查 查看包下的帮助文档(注释)g原创 2022-08-06 21:59:20 · 423 阅读 · 0 评论