Go语言中文网 为您找到相关结果 701

那些我的代码中从不用的 Golang 特性 - 马特-莱亚

- 我不使用的关键字 我不用 goto goto 会让代码执行逻辑难以阅读和理解。 另外还可以使用 label 标记来组织代码 func main() { outer: for { log.Println("outer") for { log.Println("inner") break outer } } } 我不用 fallthroughgolang 的 switch 足够好用,不需要用 fallthrough 退化到其他语言的模式。 我不用 else 大部分的 else 可以用反转判断来实现。例如: if something.OK() { something.Lock() defer something.Unlock() err := something.Do() if err == ...阅读全文

xxl-job-executor的gin中间件

# xxl-job-executor的gin中间件 ## 背景 xxl-job-executor-go是xxl-job的golang执行器,可以独立运行,有时候我们要与项目或者框架(如:gin框架)集成起来合并为一个服务,本项目因此而生。 ## 执行器项目地址 https://github.com/xxl-job/xxl-job-executor-go ## 与gin集成示例 ```go package main import ( "github.com/gin-gonic/gin" "github.com/gin-middleware/xxl-job-executor" "github.com/xxl-job/xxl-...阅读全文

30. Readers读取数据流

go语言的 io 包指定了 io.Reader 接口。go语言标准库包含了这个接口的许多实现,包括文件、网络连接、压缩、加密等等。 io.Reader 接口有一个 Read 方法: func (T) Read(b []byte) (n int, err error) 在程序中,我们使用循环读取数据流,直到 error 返回 io.EOF 。 我们建立一个每次以 8 个字节读取 strings.Reader 的输出的程序示例。 package main import( "fmt" "strings" "io" ) func main() { r := strings.NewReader("Hello, Reader!") b := make([]byte, 8) // 8 这里控制每次读取的字...阅读全文

博文 2017-08-20 02:05:02 厚土火焰山

【go】指针的风骚操作(结合unsafe.point与uintptr)

指针是具有类型的 总所周知,声明的变量都是有具体类型的,而对于存储指针的变量是否有类型,有时是一头雾水,在此做一个小总结,指针是具有类型的。 就如: var c int fmt.Println(reflect.TypeOf(c)) d := &c fmt.Println(reflect.TypeOf(d)) 结果: int *int 那可能一些人就会有疑问,指针既然具有类型,那指针之间可以进行类型转换吗。就如下面一样操作 #(*Type)ptr a := (*int)(&xx) 在Go 的指针是不支持指针运算和转换 下面就详细说一下指针类型怎么互相转换 不同类型指针的互相转换 go语言是强语言类型,不同类型,不可以跨类型计算、赋值等操作。 如下: num := 2 p := &num fp ...阅读全文

博文 2020-04-06 21:32:54 dongzaidong

windows 下载 grpc

最近在windows 下安装grpc,趁着现在放假整体记录一下下载过程。 一.安装protoc程序 protoc下载地址,打开链接,下载对应版本(我下载的是protoc-3.11.4-win64.zip),解压后将protoc.exe拷贝至放入到GOPATH/bin目录下。 二.安装grpc 由于google.golang.org/grpc 已经迁移到https://github.com/grpc/grpc-go,所以我们需要另辟蹊径 在GOPATH/src 目录下创建google.golang.org 目录 切换到 GOPATH/src/google.golang.org 目录下,执行命令 git clone https://github.com/grpc/grpc-go grpc 下载g...阅读全文

博文 2020-05-02 19:32:38 __默默无闻

关于写文章的反思

看了一下我之前写的文章,有多少是水篇数?复制别人的列子有多少? 自已真正有心得的,又写了多少? 我过了需要用数量来证明自己的时候了 从今天开始,删掉那些水文,质量不高的,尽可能完善。 我可能写不了多好,但是我要求我写的东西能拿得出手。 补: session及JWT及Oath的使用。 MySql的sql语句优化。 Git遇到的问题及解决方案。 Golang的使用及避坑。 用心点...阅读全文

博文 2018-07-27 09:34:48 送你一碗大麦茶

golang中unsafe包教程

unsafe内容介绍 type ArbitraryType int type Pointer *ArbitraryType func Sizeof(x ArbitraryType) uintptr func Offsetof(x ArbitraryType) uintptr func Alignof(x ArbitraryType) uintptr unsafe包只有两个类型,三个函数,但是功能很强大。 unsafe 库让 golang 可以像C语言一样操作计算机内存,但这并不是golang推荐使用的,能不用尽量不用,就像它的名字所表达的一样,它绕过了golang的内存安全原则,是不安全的,容易使你的程序出现莫名其妙的问题,不利于程序的扩展与维护。 先简单介绍下Golang指针 *类型:普通...阅读全文

博文 2018-08-06 16:34:48 豆瓣奶茶

TiDB 优化器实现的基础:统计信息的收集

收集统计信息的意义一个 SQL 数据库里,优化器实现的好坏对性能的影响是决定性的。一个未经优化的执行计划和经过充分优化后的执行计划,执行时间的差别往往是成千上万倍。而对一个 SQL 优化器来说,统计信息是必不可少的条件,只有依赖统计信息提供的数据,优化器才可以正确估算不同的执行计划的执行代价,以选择最优的执行计划。就像一个大厨无论多么优秀,没有上等食材也是无法做出美味的饭菜。 统计信息包含的内容 统计信息有两类,包括 Table 统计信息和 Column 统计信息。Table 统计信息包含 Row Count 和 Row Size。Column 统计信息包含 Null Count,Max Value,Min Value,Distinct Count 以及 Histogram。其中 Histo...阅读全文

博文 2017-02-10 02:39:37 PingCAP

golang中bufio包

一、介绍go标准库中的bufio 最近用golang写了一个处理文件的脚本,由于其中涉及到了文件读写,开始使用golang中的 io 包,后来发现golang 中提供了一个bufio的包,使用这个包可以大幅提高文件读写的效率,于是在网上搜索同样的文件读写为什么bufio 要比io 的读写更快速呢?根据网上的资料和阅读源码,以下来详细解释下bufio的高效如何实现的。 bufio 包介绍 bufio包实现了有缓冲的I/O。它包装一个io.Reader或io.Writer接口对象,创建另一个也实现了该接口,且同时还提供了缓冲和一些文本I/O的帮助函数的对象。 以上为官方包的介绍,在其中我们能了解到的信息如下: bufio 是通过缓冲来提高效率 简单的说就是,把文件读取进缓冲(内存)之后再读取的时...阅读全文

博文 2018-12-02 13:34:44 laijh

fmt.Printf中的格式化动作('verb')

# 源自C语言但更简单 ## 通用: ``` %v 值的默认格式表示 %+v 类似%v,但输出结构体时会添加字段名 %#v 值的Go语法表示 %T 值的类型的Go语法表示 %% 百分号 ``` ## 布尔值: ``` %t 单词true或false ``` ## 整数: ``` %b 表示为二进制 %c 该值对应的unicode码值 %d 表示为十进制 %o 表示为八进制 %q 该值对应的单引号括起来的go语法字符字面值,必要时会采用安全的转义表示 %x 表示为十六进制,使用a-f %X 表示为十六进制,使用A-F %U 表示为Unicode格式:U+1234,等价于"U+%04X" ``` ## 浮点数与复数的两个组分: ``` %b 无小数部分、二进制指数的科学计数法,如-123456p...阅读全文

博文 2018-10-03 16:53:53 ace_kylin

mac执行dep ensure 遇到golang.org http meta failed 问题处理

执行 dev ensure -v 遇到如下错误 The following errors occurred while deducing packages: * "golang.org/x/net/http2": unable to deduce repository and source type for "golang.org/x/net/http2": unable to read metadata: unable to fetch raw metadata: failed HTTP request to URL "http://golang.org/x/net/http2?go-get=1": Get http://golang.org/x/net/http2?go-get=1: d...阅读全文

博文 2018-12-13 21:34:47 十月里的男艺术家

[译]使用os/exec执行命令

目录 [−] 执行命令并获得输出结果将stdout和stderr分别处理命令执行过程中获得输出命令执行过程中获得输出2命令执行过程中获得输出3改变执行程序的环境(environment)预先检查程序是否存在管道管道2 原文: Advanced command execution in Go with os/exec by Krzysztof Kowalczyk.完整代码在作者的github上: advanced-exec Go可以非常方便地执行外部程序,让我们开始探索之旅吧。 执行命令并获得输出结果 最简单的例子就是运行ls -lah并获得组合在一起的stdout/stderr输出。 12345678func main() { cmd := exec.Command("ls", "-lah"...阅读全文

博文 2017-06-21 03:55:11 smallnest

05Go语言fmt包详解

Go语言fmt包详解 格式化输出函数 func Print(a ...interface{}) (n int, err error) Print采用默认格式将其参数格式化并写入标准输出。如果两个相邻的参数都不是字符串,会在它们的输出之间添加空格,返回写入的字节数和遇到的任何错误。 func Printf(format string, a ...interface{}) (n int, err error) Printf根据format参数生成格式化的字符串并写入标准输出,返回写入的字节数和遇到的任何错误。 func Println(a ...interface{}) (n int, err error) Println采用默认格式将其参数格式化并写入标准输出。总是会在相邻参数的输出之间添加空...阅读全文

用Golang写爬虫(八) - 使用GORM存入MySQL数据库

上篇文章把数据存进了文件,这篇文章将把数据存入MySQL数据库。数据库的使用是每个开发者必备的技能,所以本篇文章我们使用Golang操作数据库。Golang没有内置的驱动支持任何的数据库,但是Go定义了database/sql接口,开发者可以基于驱动接口开发相应数据库的驱动。当然现在各种数据库驱动生态已经很稳定了,可以直接使用。 我在实际开发工作中一般不直接用数据库驱动(如github.com/go-sql-driver/mysql),而是用ORM。ORM有三大优点: 安全性。使用底层的数据库驱动是在「拼」SQL,这样很容易出现SQL注入等风险。 易于理解。拼 SQL 这种形式放在代码中是很乱的,只有开发者在当时编写时可以理解,但是后来的维护者就不那么好理解了。 易于维护。如果数据库操作代码...阅读全文

博文 2019-07-23 13:04:29 Golang编程

十分钟搭建centos7+node.js+nest.js+caddy+pm2线上环境

centos7+node.js+nest.js+caddy+pm2安装及线上环境配置 node.js安装 官方安装说明地址 https://github.com/nodesource/distributions 执行命令 curl -sL https://rpm.nodesource.com/setup_8.x | bash - sudo yum install -y nodejs 至此,noded.js安装完成 版本查看 node -v npm -v nest.js安装 官方文档地址 https://github.com/nestcn/docs/blob/master/5.0/firststeps.md 首次安装执行命令 npm i -g @nestjs/cli 以后创建项目只需在你需要的...阅读全文

博文 2018-07-19 16:34:59 码牛不是牛

从nginx热更新聊一聊Golang中的服务器热更新(上)

静态语言在服务器编程时都会遇到这样的问题:如何保证已有的连接服务不中断同时又升级版本? 最近花了点时间看了下nginx热更新代码流程,想了下结合之前的经验一并总结下热更新 1. 热更新是什么? 简单翻译成人类可读的实例是如下这个样子: 举个例子,你现在在坐卡车,卡车开到了150KM/H 然后,有个轮胎,爆了 然后,司机说,你就直接换吧,我不停车。你小心点换 嗯。就这个意思 2.网关中的热更新 服务程序热更新这个问题在层7网关中尤其严重,网关中承载着大量的请求,包括HTTP/HTTPS短连接、HTTP/HTTPS长连接、甚至是websocket这种超长连接(websocket通常连接时间会很长,十几分钟到几天不等)。这样的话我们势必不能讲服务程序停止再启动的冷更新,服务进程热更新是非常有必要的...阅读全文

博文 2019-03-14 03:34:40 Lateautumn_Lin

golang

博客 www.liwenzhou.com 代理 goproxy.io 查看go的配置 go env 初始化 go mod init xxxx 文件结构 bin pkg src 打包 运行 安装环境和各种基本命令见这个url https://www.liwenzhou.com/posts/Go/install_go_dev/ go build 打包成exe,执行exe go build -o xxx.exe 打包成xxx.exe go run 执行某个go文件 go install 打包&拷贝 Mac 下编译 Linux 和 Windows平台 64位 可执行程序: CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build CGO_ENABLED=0 GOO...阅读全文

博文 2020-03-19 15:33:19 任我笑笑

从零学习 Go 语言(03):数据类型之整型与浮点型

Hi,大家好呀,我是一个刚学习 Go 语言不久的新手,在入门 Golang 的这段时间里,我写了很多详细的学习笔记,很适合新手学习噢。这些文章已经发布在我的个人微信公众号里:《Go编程时光》里,今天开始将文章内容搬运到这里,希望有更多的人看到,给更的人带来帮助,但是这里文章会相对滞后,想获取最新文章,可以前往关注《Go编程时光》,请放心关注,这是一个纯分享的号,完全没有广告。 **系列导读 ** [从零学习 Go 语言(01):一文搞定开发环境的搭建](https://studygolang.com/articles/27365) [从零学习 Go 语言(02):学习五种变量创建的方法](https://studygolang.com/articles/27432) --- ## 1. 整型...阅读全文

博文 2020-03-24 19:39:27 hello_wbm

我要在栈上。不,你应该在堆上

文地址:我要在栈上。不,你应该在堆上 前言 我们在写代码的时候,有时候会想这个变量到底分配到哪里了?这时候可能会有人说,在栈上,在堆上。信我准没错... 但从结果上来讲你还是一知半解,这可不行,万一被人懵了呢。今天我们一起来深挖下 Go 在这块的奥妙,自己动手丰衣足食 问题 type User struct { ID int64 Name string Avatar string } func GetUserInfo() *User { return &User{ID: 13746731, Name: "EDDYCJY", Avatar: "https://avatars0.githubusercontent.com/u/13746731"} } func main() { _ = GetU...阅读全文

博文 2019-05-20 20:34:38 煎鱼

Golang中使用Date进行日期格式化(沿用Java风格)

Github https://github.com/noogo/date Date Date是一个基于time包装的一个日期包,通过此包可以快速创建日期、获取时间戳、毫秒数及最重要的日期格式化,另外你还可以继续使用time包下的所有函数(除time.Foramt(string)外)你可以通过以下方法快速创建一个Date对象: Now() WithTime(t time.Time) WithTimestamp(timestamp int64) WithMillisecond(millisecond int64) WithDate(year, month, date, hour, minute, second int) Note:你可以通过Date.Format(String,...bool)方...阅读全文

博文 2020-04-29 12:32:45 Keson

特殊的init函数

一、package 和init函数 package组织go代码的一种形式,和python ,Java,c++等语言的包是具有同样的功能,在使用其他包的函数和结构体,变量时,必须先引入package的文件,package是定义方的语句,而import是使用方的语句。有时在package的文件中,能看到init函数,这种函数一般函数不一样,无法被调用(无论是包内还是包外)。init函数只在该文件被被引用时才执行(是import时,不是调用包函数时)。 二、init函数的特殊性 在go中,init和main函数都是特殊的存在,两者都不能定义参数和返回值,否则编译器直接报错。init函数在同一个包内,同一个文件内都可以定义多个init函数,且在包依赖情况时,会优先执行依赖包的init函数。具体如下:...阅读全文

博文 2019-02-11 14:34:45 yushu1987

golang基础学习-MongoDB使用

1.系统环境 Golang:go version go1.10.3 darwin/amd64 OS:MacOS MongoBD: version: 3.4.4 2.Golang使用MongoDB 使用:gopkg.in/mgo.v2 获取包:go get gopkg.in/mgo.v2 引入:import "gopkg.in/mgo.v2" mgo简介 3.简单使用MongoDB 3.1 数据设计 3.1.1 数据库设计: 数据库名:mydb_tutorial 集合名: t_student 数据集合:t_student字段说明 字段 类型 说明 name string 姓名 age int 年龄 sid string 学号 status int 状态:1正常,9,删除 3.1.2结构体设计:...阅读全文

博文 2018-09-07 16:34:41 wmm369

将文件嵌入go代码,你的可执行程序可以携带其他文件了

```go package main import ( "compress/zlib" "fmt" "io" "log" "os" "path/filepath" ) func main() { type fileInfo struct { file string size int64 } fileList := make(map[string]fileInfo, len(os.Args)) for _, v := range os.Args[1:] { if f, err := os.Stat(v); err == nil || os.IsExist(err) { fileList[filepath.Base(v)] = fileInfo{file: v, size: f.Size()} ...阅读全文

博文 2019-10-09 10:31:50 jan-bar

golang中encoding/base32包

1、golang中base32包是什么? 2、base32给我们开发者提供了什么?以及用法? 3、编码与解码各有哪几种操作? 一、golang中base32包是什么? 这个包实现了 RFC 4648 定义的 base32 编码。 二、base32给我们开发者提供了什么? 变量: RFC 4648 定义的标准 base32 编码。 var StdEncoding = NewEncoding(encodeStd) RFC 4648 里定义的"Extended Hex Alphabet",一般用于DNS var HexEncoding = NewEncoding(encodeHex) 函数: 1)func NewDecoder(enc *Encoding, r io.Reader) io.Read...阅读全文

博文 2018-12-11 17:34:49 laijh

llvm cookbook 1.11 golang前端

本文介绍llgo的使用。 安装llgo,需要翻墙 # Ensure $GOPATH is set. go get -d github.com/go-llvm/llgo/cmd/gllgo $GOPATH/src/llvm.org/llvm/bindings/go/build.sh -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD=host cd $GOPATH/src/github.com/go-llvm/llgo make install prefix=/path/to/prefix j=N # where N is the number of cores on your machine. 编写代码 test.go package mai...阅读全文

博文 2018-11-09 22:34:38 peteyuan

go语言

1. go语言结构 Go 语言的基础组成有以下几个部分: 包声明引入包函数变量语句 & 表达式注释 第一行代码 package main 定义了包名。你必须在源文件中非注释的第一行指明这个文件属于哪个包,如:package main。package main表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包。下一行 import "fmt" 告诉 Go 编译器这个程序需要使用 fmt 包(的函数,或其他元素),fmt 包实现了格式化 IO(输入/输出)的函数。下一行 func main() 是程序开始执行的函数。main 函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数(如果有 init() 函数则会先执行该函数)。下一行 /*...*/ 是...阅读全文

博文 2018-01-15 16:31:01 wangzhanzheng

[译] Go 1.13 errors 包错误处理

文地址:peter.bourgon.org/blog/2019/0… 原文作者:Peter 译文地址:github.com/watermelo/d… 译者:咔叽咔叽 译者水平有限,如有翻译或理解谬误,烦请帮忙指出 Go 1.13 引入了一个增强的package errors,大致标准化了错误处理。就个人而言,我觉得它的 API 令人有点困惑。本文提供一些如何更有效使用它的参考。 创建 errors sentinel errors(译者注:表示在此错误中断,程序不会继续往下处理)和以前一样。将它们命名为 ErrXxx,使用 errors.New 来创建它们。 var ErrFoo = errors.New("foo error") 复制代码错误类型基本上也和以前一样。将它们命名为 XxxErr...阅读全文

博文 2019-09-18 16:34:32 咔叽咔叽

Go博客平台Pipe 1.8.2发布,支持GitHub登录

Pipe 是一款小而美的开源博客平台,使用golang、Vue.js编写。v1.8.2主要支持了通过GitHub登录,并修复了一些细节缺陷,建议在用老版本的用户进行更新。安装:下载最新的Pipe包解压,进入解压目录,直接运行pipe/pipe.exe可执行文件即可。从1.8.1升级,只需将已有的配置,拷贝覆盖即可,启动后会自动升级。项目:GitHub:https://github.com/b3log/pipe码云:https://gitee.com/dl88250/pipe1.8.2变更记录支持GitHub登录;站点标题过长问题;博客标签挡住了输入的内容...阅读全文

博文 2018-10-19 13:34:39 苍山落暮

好奇怪 win交叉编译了Linux可执行文件,报错后显示Windows上路径

好奇怪 win交叉编译了Linux可执行文件,报错后显示Windows上路径 这个是什么情况啊 怎么会泄露Windows上的路径呢, 还泄露我Windows上的程序路径! ![QQ图片20180518005305.png](https://static.studygolang.com/180518/c1eb99a1221e9fdc73d4833dd7d11164.png...阅读全文

Golang之import和package

package 1、package是golang最基本的分发单位和工程管理中依赖关系的体现2、每个golang源代码文件开头都拥有一个package声明,表示该golang代码所属的package。3、要生成golang可执行程序,必须建立一个名为main的package,并且在该package中必须包含一个名为main()的函数。4、在golang工程中,同一个路径下只能存在一个package,一个package可以拆成多个源文件组成。5、import关键字导入的是package路径,而在源文件中使用package时,才需要package名。经常可见的import的目录名和源文件中使用的package名一致容易造成import关键字后即是package名的错觉,真正使用时,这两者可以不同...阅读全文

博文 2020-02-10 05:32:39 你仲夏未归

Golang学习笔记之字符串(string)

在 Go 中字符串是 byte 数组。可以通过将内容放在双引号 "" 之间的方式来创建一个字符串。字符串是不可变值类型,内部⽤指针指向 UTF-8 字节数组。 • 默认值是空字符串 ""。 • ⽤索引号访问某字节,如 s[i]。 • 不能⽤序号获取字节元素指针, &s[i] ⾮法。 • 不可变类型,⽆法修改字节数组。 • 字节数组尾部不包含 NULL。 runtime.h struct String { byte* str; intgo len; }; (1)使⽤索引号访问字符 。 s := "abc" fmt.Println(s[0]) //97 fmt.Printf("%c\n", s[0]) //a fmt.Println(s[0] == '\x61', s[1] == 'b', s[...阅读全文

博文 2018-12-08 11:34:46 学生黄哲

4. Go语言中byte、rune与字符串区别?

文章首发自公众号:Go编程时光 《Go编程时光》,一个能带你学习 Go 语言的专栏,同时欢迎搜索我的同名公众号【Go编程时光】(排版精美更适合阅读),第一时间获取Go语言干货。 系列导读 1. 一文搞定Go语言开发环境的搭建 2. Go 语言中五种变量创建的方法 3. Go语言中的整型与浮点型 1. byte 与 rune byte,占用1个节字,就 8 个比特位,所以它和 uint8 类型本质上没有区别,它表示的是 ACSII 表中的一个字符。 如下这段代码,分别定义了 byte 类型和 uint8 类型的变量 a 和 b import "fmt" func main() { var a byte = 65 // 8进制写法: var c byte = '\101' 其中 \ 是固定前缀 ...阅读全文

博文 2020-03-31 11:34:44 王一白

Go36-38,39-bytes包

基本操作 bytes包和strings包非常相似,单从它们提供的函数的数量和功能上看,差别微乎其微。 strings包主要是面向Unicode字符和经过UTF-8编码的字符串,而bytes包主要是面对字节和字节切片。 bytes.Buffer类型 Buffer类型的用途主要是作为字节序列的缓冲区。 bytes.Buffer是开箱即用的。可以进行拼接、截断其中的字节序列,以各种形式导出其中的内容,还可以顺序的读取其中的子序列。所以是集读、写功能与一身的数据类型,这些也是作为缓冲区应该拥有的功能。 在内部,bytes.Buffer类型使用字节切片(bootstrap字段)作为内容容器。还有一个int类型(off字段)作为已读字节的计数器,简称为已读计数。不过这里的已读计数是不无获取也无法计算得到...阅读全文

博文 2019-02-03 10:35:13 骑士救兵

golang开发笔记

同时用多种语言开发前后端、移动端难免会混乱记不清API,所以golang开发中遇到的小问题都会慢慢在此笔记中添加。 文件和目录操作 得到当前程序的运行目录 if dir, err := filepath.Abs(filepath.Dir(os.Args[0])); err == nil { } 使用go run 运行的程序的路径是在一个临时目录中。 使用go build得到的可执行文件运行才会得到真正的当前目录。 创建目录 //创建目录 os.Mkdir(dir, os.ModeDir) //创建多级目录 os.MkdirAll(dir, os.ModePerm) 写文件 //简单的写文件API。必须添加os.ModePerm,否则在mac中双击打开文件时会提示没有权限, //显示简介中可以...阅读全文

博文 2018-09-12 23:34:39 云上听风

golang实现延时队列基本原理

主要参考了文章: https://www.cnblogs.com/jkko123/p/7239420.html 更进一步的设计需要参考(未完成) https://tech.youzan.com/queuing_delay/ package main import ( "errors" "fmt" "time" ) const cicleSectionNum = 10 type TaskFunc func(args ...interface{}) //任务 type Task struct { runTime time.Time //初次运行时间 cycleNum int //需要第几圈 curIndex int //当前运行到第几格 //执行的函数 exec TaskFunc params ...阅读全文

博文 2019-07-25 16:32:55 成木2016

golang学习(1)

1 go语言特点:原生支持高并发,带垃圾回收,快速编译静态编译型语言2 go安装:2.1 go的几种安装方式2.2 Go的环境变量 $GOROOT:go的安装目录,配置后不会再更改;$PATH:需要将go的bin目录添加到系统$PATH中以便方便使用go的相关命令,配置后也不会再更改;$GOPATH:go项目在本地的开发环境的的项目根路径(以便项目编译,go build, go install),不同的项目在编译的时候该环境变量可以不同:上图: 2.3 GOPATH指配置的go的工作空间,区别于Go的安装包位置,GOPATH需要加入环境变量。比如GOPATH配置的路径指向gowork下,那么gowork目录下一般会有三个目录,bin,pkg,src,bin 下是可执行程序,理解为编译完成可直...阅读全文

Golang bytes.buffer详解

Buffer 介绍 Buffer 是 bytes 包中的一个 type Buffer struct{…} A buffer is a variable-sized buffer of bytes with Read and Write methods. The zero value for Buffer is an empty buffer ready to use. (是一个变长的 buffer,具有 Read 和Write 方法。 Buffer 的 零值 是一个 空的 buffer,但是可以使用) Buffer 就像一个集装箱容器,可以存东西,取东西(存取数据) 创建缓冲器 func main() { buf1 := bytes.NewBufferString("hello") buf2...阅读全文

博文 2019-01-28 15:34:49 小马哥_Magical

Golang入门: 用一句话说明Go语言的命令

Go命令是管理Go资源的工具安装好Go环境后会内置很多有用的命令工具。 初步的了解一下这些命令的用途,对写代码很有帮助 有一些命令是非常常用的,比如 run、build、get、test、get,有一些命令在使用IDE后很少会用到,IDE代劳了,比如fmt、vet。 下面是常用命令的清单和简单的一句话说明,看看有没有你还没用过的命令吧! 常规用法: `go <命令> [参数]` 命令: bug :创建一个bug报告执行完命令后,会用浏览器访问github.com/golang/go 的issue。自动填写一些内容,引导你如何提交一个bug报告 build:编译包以及其依赖最常用的命令之一。默认情况下,会在命令所在目录生成一个当前操作系统对应的可执行文件。安装完整版的Go环境,可以交叉编译其他...阅读全文

博文 2019-04-29 16:34:45 ZetaChow晓代码

Golang 在 Mac、Linux、Windows 下如何交叉编译

载自https://blog.csdn.net/panshiqu/article/details/53788067 Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序,最近使用了一下,非常好用,这里备忘一下。 Mac 下编译 Linux 和 Windows 64位可执行程序 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go Linux 下编译 Mac 和 Windows 64位可执行程序 CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go CGO...阅读全文

博文 2018-06-28 13:34:39 你清澈又神秘

gocommand:一个跨平台的golang命令行执行package

最近在做一个项目的时候,需要使用golang来调用操作系统中的命令行,来执行shell命令或者直接调用第三方程序,这其中自然就用到了golang自带的exec.Command. 但是如果直接使用原生exec.Command会造成大量的重复代码,网上搜了一圈又没有找到对exec.Command相应的封装包,索性自己封装了一个,取名为gocommand.目前支持Linux和Windows,欢迎各位大神在github上提交代码补充其他平台的实现. 下面介绍一下gocommand库的实现思路: package gocommand // 命令行接口 type Commander interface { // 执行命令行并返回结果 // args: 命令行参数 // return: 进程的pid, 命令...阅读全文

博文 2018-07-27 14:30:01 lizongshen

Go语言学习笔记3

3.Go语言数据类型 其实前面已经涉及到了数据类型的一些知识点。本篇将仔细地讲讲Go语言的数据类型。 3.1 基本数据类型 名称 宽度(字节) 零值 说明 bool 1 false 布尔类型,真用常量true表示,假用常量false表示 byte 1 0 字节类型,可看作uint8的别名类型 rune 4 0 rune类型,专门存储Unicode编码,可看作uint32的别名类型 int/uint - 0 有符号整数类型/无符号整数类型,宽度与平台相关 int8/uint8 1 0 由8位二进制数表示的有符号整数类型/无符号整数类型 int16/uint16 2 0 由16位二进制数表示的有符号整数类型/无符号整数类型 int32/uint32 4 0 由32位二进制数表示的有符号整数类型/...阅读全文

博文 2016-09-05 09:01:00 u012855229

goLang 文件操作之二

文件读写 1.1 复制文件 package main import ( "os" "log" "io" ) func main(){ //打开原始文件 originalFile,err:=os.Open("test.txt") checkErr(err) defer originalFile.Close() //创建新的文件作为目标文件 newFile,err:=os.Create("test_copy.txt") checkErr(err) defer newFile.Close() //从源中复制字节到目标文件 bytesWritten,err:=io.Copy(newFile,originalFile) checkErr(err) log.Printf("copied %d bytes...阅读全文

博文 2018-02-07 15:34:38 soledad

4. golang的整数和浮点数以及bool类型

一, 整数 整数,就是存放整数值的,如0, -1, 800等 整数的类型: 类型 有无符号 占用存储空间 值范围 备注 int8 有 1字节 -2^7 ~ 2^-1 int16 有 2字节 -2^15 ~ 2^15 -1 int32 有 4字节 -2^31 ~ 2^31 -1 int64 有 8字节 -2^63 ~ 2^63 -1 uint8 无 1字节 0 ~ 2^8 - 1 uint16 无 2字节 0 ~ 2^16 - 1 uint32 无 4字节 0 ~ 2^32 - 1 uint64 无 8字节 0 ~ 2^64 - 1 int 有 32位系统4个字节 64位系统8个字节 参考int32和int64 uint 无 32位系统uint32 64系统uint64 参考uint32和ui...阅读全文

博文 2020-01-22 17:32:44 瓦灯_c6f0

Go -- 中开启gctrace

godebug是一个跨平台的Go程序调试工具,传统的编译型语言调试器使用底层系统调用并读取二进制文件用于调试各类符号。使用起来很麻烦而且很难移植。 godebug使用不同的方法,直接把源码作为目标程序,在每一行插入调试代码,然后编译并运行。结果就是一个全功能的调试器,完全可以移植到不同平台。事实上,由于有了gopherjs ,你也可以在浏览器上进行调试: 点击此处尝试原文调试窗口。通过原文的“DEBUG IT”按钮,你可以编辑程序并重新调试它。 工作原理 下面这张是描述上面例子的矢量图: 从中可以看出原始代码转换了两次:第一次godebug插入调试instrumentation,然后gopherjs将结果编译成JavaScript。 让我们看一下instrumentation步骤,以下是go...阅读全文

博文 2019-04-19 16:31:04 weixin_34378969

Go语言笔记 | 03-变量的声明和初始化

Go语言笔记 | 03-变量的声明和初始化 变量声明 在 go 语言中声明一个变量一般要用到关键字 var,变量声明的语法:var 变量名 类型 = 表达式。 在声明变量时将变量的类型放在变量的名称之后,和 c 语言不太一样,原因可以参考go 声明语法。 声明一个变量 var i int // 0 声明一个变量列表,同类型的变量 var a, b, c string // "", "", "" 声明一组变量,不同类型的变量 var ( str string // "" avg, sum float32 // 0.0, 0.0 ) 未初始化的变量,系统会自动赋予该类型的零值 变量零值 当一个变量被声明之后,系统自动赋予它该类型的零值 bool 的零值为 false 整数的零值为 0 浮点数的零...阅读全文

博文 2019-01-23 21:34:40 jianggushi