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

Go 解决"no buildable Go source file in"问题

【问题】 我有一个文件夹,文件夹名字叫 12 ,并且我创建了一个Go源文件 12_test.go,代码如下: package main import "fmt" func main() { fmt.Println("Hello world") } 运行下面命令时出了错: go build 12_test.go "go build command-line-arguments: no buildable Go source files in D:\12" 【解决】 _test后缀在Go语言中有着特殊含义,是用来给Go程序做测试的,build工具会忽略它们,它们会运行 go test。从文件名中删除_test,或者重命名就可以解决这个问题...阅读全文

博文 2016-12-15 13:00:02 吃一堑消化不良

阿里巴巴容器技术Pouch

2017年杭州云栖大会中,阿里巴巴正式宣布,自主研发的容器技术 Pouch 将以开源的形式回馈社区,希望与开发者共同推动中国容器技术发展,共建容器生态。 ![image](https://static.oschina.net/uploads/space/2017/1104/104417_iyoH_12.jpg) 阿里Pouch并不是一个完全创新的技术。最早,阿里基于LXC技术为集团业务提供容器服务,2011年,阿里自研容器技术T4,2016年,阿里内部将容器技术重新命名为Pouch,并于去年支持集团内部大量核心业务,比如电商平台核心业务、主要应用和部分数据库、蚂蚁金服的支付业务,淘宝网的交易业务等等。 关于Pouch的命名由来,源于阿里作为开放赋能者,注重用户场景应用的初衷。正如阿里巴...阅读全文

开源项目 2017-11-27 05:00:06 网友

gopkg:一种方便的go pakcage管理方式

在使用go的过程中,我们有时候会引入一些第三方库来使用,而通常的方式就是使用go get,可是这样的方式有一个非常严重的问题,假设第三方库更新了相关接口,非常有可能你就无法使用了,所以我们一套非常好地包管理机制。在读生产环境下go语言最佳实践有感一文中,我介绍过soundcloud公司的做法,直接将第三库的代码check下来,放到自己project的vendor文件夹里面,或者使用godep。只是如今,我发现了一种更好的包管理方式gopkg。它通过约定使用带有版本号号的url来让go tool去check指定的版本号库,尽管如今仅仅支持github的go repositories,可是我认为已经足够强大。一个非常easy的样例,我们通过例如以下方式获取go的yaml包go get gopkg...阅读全文

博文 2015-03-30 03:00:01 bhlsheji

golang创建文件目录os.Mkdir、os.MkdirAll区别

本文主要讲述os.Mkdir、os.MkdirAll区别以及在创建文件目录过程中的一些其他技巧。 os.Mkdir("abc", os.ModePerm) //创建目录 os.MkdirAll("dir1/dir2/dir3", os.ModePerm) //创建多级目录 首先,试图从一个Go可执行文件创建一组嵌套目录(如’dir1/dir2/dir3’),并打印错误出来看看。 err:=os.Mkdir(“dir1/dir2/dir3”,os.ModePerm) if err!=nil{ fmt.Println(err) } result:mkdir ./dir1/dir2/dir3: The system cannot find the path specified. Mkdir 用于创...阅读全文

博文 2019-02-24 19:34:42 不屈真实

goLang 文件操作之一

go 官方库的文件操作分散在多个包中,感觉有点乱,比如os,ioutil包,基于别人总结的基础上简单总结一下 1.文件基本操作 1.1创建空文件 package main import ( "os" "log" ) var ( newFile *os.File err error ) func main(){ //创建文件 newFile,err=os.Create("text.txt") checkErr(err) log.Println(newFile) newFile.Close() } /** 检查错误 */ func checkErr(err error){ if err!=nil{ log.Fatal(err) } } 1.2 truncate 文件 package main i...阅读全文

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

什么是SSA以及SSA的作用

SSA概述SSA在Go1.7中被引入,这个特性对编译器的性能有很大的提高,但是也导致编译过程有些减速。下面来结合网上的资粮和书籍,简单说明一下SSA以及SSA的应用。 SSA 代表 static single-assignment,是一种IR(中间表示代码),要保证每个变量只被赋值一次。这个能帮助简化编译器的优化算法。 y := 1 y := 2 x := y 比如上面这段代码,y = 1其实是不可用的,这个要通过定义的可达分析来确定y是要用1还是2,而SSA有一个标识符可以称之为版本或者“代“。 y1 := 1 y2 := 2 x1 := y2 这样就没有任何间接值了。用SSA表示的好处是对于同一个变量的无关使用表示成不同“代”,可以方便很多编译器的优化算法的实现。 一个概念: Φ(读作f...阅读全文

博文 2017-02-09 04:35:38 yueyue.gao

gopkg:一种方便的go package管理方式

在使用go的过程中,我们有时候会引入一些第三方库来使用,而通常的方式就是使用`go get`,但是这种方式有一个很严重的问题,如果第三方库更新了相关接口,很有可能你就无法使用了,所以我们一套很好地包管理机制。 在读生产环境下go语言最佳实践有感一文中,我介绍过soundcloud公司的做法,直接将第三库的代码check下来,放到自己工程的vendor目录里面,或者使用godep。 不过现在,我发现了一种更好的包管理方式gopkg。它通过约定使用带有版本号的url来让go tool去check指定的版本库,虽然现在只支持github的go repositories,但是我觉得已经足够强大。 一个很简单的例子,我们通过如下方式获取go的yaml包 go get gopkg.in/yaml.v1 ...阅读全文

博文 2014-10-04 19:26:26 siddontang

搭建go tour(go指南)

Google在golang.org和appspot上分别搭建了基于浏览器的交互式Go编程指南-go tour,便于golang学习.但由于中国特色的网络环境无法正常访问,so决定自己搭建一个go tour. 准备工作: export GOPATH=$HOME/golang 下载相关内容(推荐使用http://gopm.io下载) [不用"go install code.google.com/p/go-tour/gotour"的原因是网络环境和没安装hg.] go-tour:code.google.com/p/go-tour/gotour go.tools:code.google.com/p/go.tools (依赖) go.net:code.google.com/p/go.net (依赖) ...阅读全文

博文 2014-10-20 14:00:17 陈好

深入研究Go(golang) Type类型系统

我们为什么需要类型Type? 在回答这个问题之前,我们先了解一下编程语言的原始抽象层,尽管在日常生活当中我们已经不需要处理它们。 机器表示的数据离我们有多近? img 机器能够理解二进制的0和1,但是我们却不能够理解。 img 所以我们将二进制的0和1抽象到更高一个层次。 思考一下这段汇编代码的片段: img 你能告诉我寄存器R1, R2, R3分别是什么数据类型吗? 你可能希望他们是int类型,因为在汇编语言层次它们是可以被确定的。但在这里它们可能是任意一种类型,因为它们只是一堆存有0和1数据的寄存器。尽管没有什么意义,机器仍然会将R2和R3的数据相加,生成一个位模式并存入R1中。 所以,类型的概念是出现于更高层次的抽象语言中,比如 C, Go, Java, Python, JavaScr...阅读全文

博文 2019-04-27 23:34:43 陈卧虫

用Golang撸了个文件监测、同步小工具

本文最早发布于 Rootrl's Blog 缘起 我们公司开发环境很特殊,一台本地服务器,然后分配多个ssh账户给开发者。平时上传代码只能ftp/sftp连接上传(以前用过samba共享,但被关了。。)。所以我们平时是在Phpstorm上用sftp远程打开服务器上的项目,然后设置自动上传。这样一般工作没问题。但是有个坑:Phpstorm无法捕获类似git checkout这些更改文件的变化。。所以也就无法让本地代码跟服务器保持一致了。所以也就诞生了想写个这个同步机制的念头,这种场景Golang很适合。于是就开始撸起来。。 项目地址:https://github.com/rootrl/Mancy 实现 大致思路是监测一个文件夹的变化(本地代码库),如果有变化就通过sftp上传到服务器上。 监测...阅读全文

博文 2018-06-07 21:34:36 rootrl

Go语言监控文件变化小程序.

package main import ( "log" "github.com/go-fsnotify/fsnotify" ) func main() { watcher, err := fsnotify.NewWatcher() if err != nil { log.Fatal(err) } defer watcher.Close() done := make(chan bool) go func() { for { select { case event := <-watcher.Events: log.Println("event:", event) if event.Op&fsnotify.Write == fsnotify.Write { log.Println("modifie...阅读全文

博文 2015-10-23 12:00:06 fyxichen

golang中文件以及文件夹路径相关操作

获取目录中所有文件 使用包: io/ioutil 使用方法: ioutil.ReadDir 读取目录 dirmane 中的所有目录和文件(不包括子目录) 返回读取到的文件的信息列表和读取过程中遇到的任何错误 返回的文件列表是经过排序的 FileInfo type FileInfo interface { Name() string // base name of the file Size() int64 // length in bytes for regular files; system-dependent for others Mode() FileMode // file mode bits ModTime() time.Time // modification time IsDi...阅读全文

用Go语言实现的批量重命名文件工具

今天早上想把文件传到网盘里,而且还想修改把文件名改成文件名的md5,一个一个修改比较麻烦。 最近一直在研究Go语言,该语言比较简洁,可以编译成可执行程序,所以就用Go语言写了一个小工具叫md5ren。 实现的功能是在要修改的文件夹中执行命令md5ren,达到的目标是将该文件夹下所有的文件以及文件夹都修改成原始名称的md5值,如果是文件,则保留原文件的后缀。 使用到的Go语言的功能有: 列出一个文件夹下的所有文件 判断文件类型,是文件还是文件夹 写文件 生成字符串的MD5值 列出一个文件夹下的所有文件 files, err := ioutil.ReadDir(dir) 判断文件类型 通过ioutil.ReadDir返回的结果为FileInfo类型的数据,FileInfo有IsDir方法,可以判...阅读全文

博文 2015-05-10 03:00:01 liwp_Stephen

golang创建文件目录 os.Mkdir、os.MkdirAll 区别

本文主要讲述os.Mkdir、os.MkdirAll区别以及在创建文件目录过程中的一些其他技巧。 os.Mkdir("abc", os.ModePerm) //创建目录 os.MkdirAll("dir1/dir2/dir3", os.ModePerm) //创建多级目录 首先,试图从一个Go可执行文件创建一组嵌套目录(如’dir1/dir2/dir3’),并打印错误出来看看。 err:=os.Mkdir(“dir1/dir2/dir3”,os.ModePerm) if err!=nil{ fmt.Println(err) } result:mkdir ./dir1/dir2/dir3: The system cannot find the path specified. Mkdir 用于创...阅读全文

博文 2019-02-25 12:34:42 Chole121

golang 字节对齐

最近在做一些性能优化的工作,其中有个结构体占用的空间比较大,而且在内存中的数量又特别多,就在想有没有优化的空间,想起了 c 语言里面的字节对齐,通过简单地调整一下字段的顺序,就能省出不少内存,这个思路在 golang 里面同样适用 基本数据大小 在这之前先来看下 golang 里面基本的类型所占数据的大小 So(unsafe.Sizeof(true), ShouldEqual, 1) So(unsafe.Sizeof(int8(0)), ShouldEqual, 1) So(unsafe.Sizeof(int16(0)), ShouldEqual, 2) So(unsafe.Sizeof(int32(0)), ShouldEqual, 4) So(unsafe.Sizeof(int64(0)...阅读全文

博文 2018-03-17 02:34:37 hatlonely

文件描述符、打开文件表以及inode

linux系统相关书籍中关于文件描述符及相关内容,通常会出现一张类似这样的图 ![filegraph1.png](https://static.studygolang.com/180105/da2689a8117283cb1da04f187ed8d84b.png) 或者这样的图 ![filegraph2.png](https://static.studygolang.com/180105/99268d61ce78ccb559a9cffd5630e400.png) 第一个图来自Michael Kerrisk的《Linux/UNIX系统编程手册》,第二个图来自《UNIX环境高级编程》(也就是APUE)。 文中对相关信息做了论述并且配上了上面这样的图,但是我相信很多人看完以后觉得好像懂了,那么请尝...阅读全文

博文 2018-01-05 22:21:01 changjixiong

Go自学团队:Day 1 :批量文件重命名,替换文件名

``` /** 批量文件重命名,替换文件名 王参加 2018-03-08 23:00 */ package main import ( "flag" "fmt" "os" "path/filepath" "strings" ) func main() { // 解析命令行参数 var dir string flag.StringVar(&dir, "d", "", "要替换的目录物理路径,如:/tmp/go/") var oldstr string flag.StringVar(&oldstr, "o", "", "要替换的字符:例如:替换 .php 或者 .inc.") var newstr string ...阅读全文

gopkg:一种方便的go pakcage管理方式

在使用go的过程中,我们有时候会引入一些第三方库来使用,而通常的方式就是使用go get,但是这种方式有一个很严重的问题,如果第三方库更新了相关接口,很有可能你就无法使用了,所以我们一套很好地包管理机制。在读生产环境下go语言最佳实践有感一文中,我介绍过soundcloud公司的做法,直接将第三库的代码check下来,放到自己工程的vendor目录里面,或者使用godep。不过现在,我发现了一种更好的包管理方式gopkg。它通过约定使用带有版本号的url来让go tool去check指定的版本库,虽然现在只支持github的go repositories,但是我觉得已经足够强大。一个很简单的例子,我们通过如下方式获取go的yaml包go get gopkg.in/yaml.v1 而实际上,该...阅读全文

博文 2014-10-10 23:00:01 siddontang

Go 边看边练 -《Go 学习笔记》系列(三)

上一篇: Go 边看边练 -《Go 学习笔记》系列(二) 1.7 指针 支持指针类型 *T,指针的指针 **T,以及包含包名前缀的 *.T。 默认值 nil,没有 NULL 常量。 操作符 "&" 取变量地址,"*" 透过指针访问目标对象。 不支持指针运算,不支持 "->" 运算符,直接用 "." 访问目标成员。 不能对指针做加减法等运算。 x := 1234 p := &x p++ // Error: invalid operation: p += 1 (mismatched types *int and int) 可以在 unsafe.Pointer 和任意类型指针间进行转换。 返回局部变量指针是安全的,编译器会根据需要将其分配在 GC Heap 上。 func tes...阅读全文

博文 2015-09-04 21:37:03 88250

golang 初始化顺序

1.import机制● main -> import pkg1 -> const -> var ... -> init() -> main()● pkg1 -> import pkg2 -> const -> ...● pkg2 -> ... import( "time" //普通写法 . "fmt" //使用此包内的成员时不带fmt前缀 j "encoding/json" //json包重命名 // 引入包顺序遵循 标准库,项目包,第三方包 ) 不要使用相对路径引入包(以GOPATH/src作为根目录) import 后面跟着包路径。go语言的惯例只是一个特例,即恰好目录名与包名一致。import中的foo只是一个文件系统的路径。而下面foo.Foo()中的foo则是包名。而这个包是在sr...阅读全文

博文 2018-10-13 10:34:43 夏至悲歌

Go 语言 import 下划线 _ 使用说明

// main project main.go package main import ( "fmt" //_ "main/hello/imp" "main/hello/imp" "runtime" ) func main() { for skip := 0; ; skip++ { pc, file, line, ok := runtime.Caller(skip) if !ok { break } fmt.Printf("skip = %v, pc = %v, file = %v, line = %v\n", skip, pc, file, line) } imp.Print() } package imp import ( "fmt" ) func init() { fmt.Printl...阅读全文

博文 2017-05-09 03:00:28 痞子汤

Go 语言开发工具 LiteIDE X33.1 正式发布

Go 语言开发工具 LiteIDE X33.1 正式发布。 新版本对菜单进行调整和规范,新增了工具菜单,编辑菜单保持可见,重命名了部分工具窗口。 修复了编辑器内查找功能的全文替换错误, 对快速打开文件操作 ( ctrl+p / command+p ) 改用线程方式重新实现,新增了快速打开命令功能 ( ctrl+shift+p / command+shift+p ),集成了 gomodifytags 并提供GUI界面实现对结构体 Tags 的快速增删功能。 LiteIDE X33.1 使用 go1.10beta1 编译, 支持 Go1.9 / Go1.10beta1 或者更低的 Go 版本。 Links - LiteIDE Home http://liteide.org -...阅读全文

Go语言编程基础01

一 关键字 关键字一共25个,都是小写。 break default func interface select case defer go map struct chan else goto package switch const fallthrough ifrange type continue for import return var 二 Go程序的一般结构 1. Go程序是通过package来组织的。 2. 只有package名称为main的包可以包含main函数。 3. 一个可执行程序有且仅有一个main包。 4. 通过import关键字来导入其它非main包。 5. 通过const关键字来进行常量的定义。 6. 通过函数体外部使用var关键字来进行全局变量的声明与赋值。 7....阅读全文

博文 2014-11-06 21:00:01 u013902270

[翻译]Go 版本 1 发布

文:http://blog.golang.org/2012/03/go-version-1-is-released.html —————-翻译分隔线—————- Go 版本 1 发布 今天,在 Go 编程语言的开发上标记了一个主要的里程碑。我们宣布 Go 版本 1,或者简称为 Go 1,定义了一个语言和一系列的核心库作为基础,用于创建可信赖的产品、项目和出版物。 Go 1 是 Go 的第一个发布,提供了二进制包。可用于 Linux、FreeBSD、Mac OS X 以及,令人非常兴奋的——Windows。 对于用户来说 Go 1 驾驭起来相当稳定。编写 Go 1 程序的人可以完全确信在大多数环境下,即使再过若干年,仍然无需对程序做任何修改,它还能编译和运行。类似的,编写关于 Go 1 书籍的...阅读全文

博文 2014-10-09 16:15:46 mikespook

go方法的深入探究(7.21增补)

1)哪些类型可以有方法: 1)只能对命名类型和命名类型的指针编写方法; 2)不能对接口类型和接口类型的指针编写方法; 3)只能在定义命名类型的那个包编写其方法。 2)receiver是值的方法,编译器会隐式的生成一个receiver是对应类型指针的同名方法。反过来却不会。 3)结构体的匿名字段的类型限制: 1)不可以是未命名类型; 2)可以是命名类型或命令类型的指针类型; 3)接口类型可以,接口类型的指针类型不行; 4)结构体匿名字段的方法向外传递的规则: 1)匿名字段为值类型时:值的方法会传递给结构体的值,指针的方法会传递给结构体的指针; 2)匿名字段为指针类型时:指针的方法会传递给值和指针; 3)匿名字段为接口类型时:方法会传递给值和指针; 5)匿名字段的方法,是被经过包装实现为外围结构...阅读全文

博文 2014-10-04 19:27:50 刘地

goread安装配置

goread 安装配置 系统ubuntu 13.04 web服务器apache https://github.com/mjibson/goread 安装步骤 这个就不详细说了,可以看他的README,只大概说一下 1.安装python2.7并确保其在PATH中 2.安装Git,Mercurial并确保git and hg 在PATH中 3.安装GO App Engine SDK并确保其在PATH中,这个的简单说一下,把zip包下载下来,然后解压到一个目录,然后把这个目录加入到PATH中即可. 4.使用命令 goapp get -d github.com/mjibson/goread 下载goread,并把下载的目录加到GOPATH中 5.cd $GOPATH/src/github.com/m...阅读全文

博文 2014-10-10 08:00:01 __蜗牛__

go 工具链目前[不支持编译 windows 下的动态链接库][1],不过[支持静态链接库][2]

go 工具链目前[不支持编译 windows 下的动态链接库][1],不过[支持静态链接库][2]。想要产生dll,可以这样 workaround ,参考 golang [issuse#11058][1]: 首先得装一个 windows 下的 gcc 开发环境,我用了 [msys2][3] 。 需要配置一个快点的源,我用[中国科技大学的源][4]。 安装 gcc 工具链: pacman -S mingw-w64-x86_64-toolchain (注意这里有个坑, msys64 根目录有两个 mingw64.* 文件会导致 pacman 安装失败,我是暴力重命名了冲突的文件。) 编译静态链接库: go build -buildmode=c-archive -o libfoo.a foo.go...阅读全文

博文 2017-12-12 16:00:01 findumars

[Go] --- LiteIDE配置Go语言的代码智能补全

http://blog.csdn.net/qiurisuixiang/article/details/8732900 Email : hahayacoder@gmail.com 1 有一款叫做gocode的插件能帮助Go的代码智能补全,使用它能使开发更加高效 2 下载gocode,下载地址https://github.com/nsf/gocode/ 3 将下载好的gocode-master解压到任意目录下 4 打开cmd,切换到解压后的目录中,执行go install,执行成功后该目录下会生成一个gocode-master.exe(和该目录同名)的文件 5 将该exe文件重命名成gocode.exe,然后复制到go安装目录下的bin目录中 6 重启启动LiteIDE,体验代码补全功能吧...阅读全文

博文 2015-06-17 23:07:47 e_wsq

Kubecm:管理你的 kubeconfig

封面 前言 该项目脱胎于 mergeKubeConfig 项目,最早写该项目的目的是在一堆杂乱无章的 kubeconfig 中自由的切换。随着需要操作的 Kubernetes 集群越来越多,在不同的集群之间切换也越来越麻烦,而操作 Kubernetes 集群的本质不过是通过 kubeconfig 访问 Kubernetes 集群的 API Server,以操作 Kubernetes 的各种资源,而 kubeconfig 不过是一个 yaml 文件,用来保存访问集群的密钥,最早的 mergeKubeConfig 不过是一个操作 yaml 文件的 Python 脚本。而随着 golang 学习的深入,也就动了重写这个项目的念头,就这样 kubecm 诞生了。 kubecm kubecm 由 go...阅读全文

博文 2019-12-10 01:32:46 晒太阳的毛线

golang项目代码重构(一)

刚入行,果断重构了第一个项目 把功能匆匆忙忙地实现了,前后端分离的意思就是,得抓紧把接口功能实现了,以免影响别人的进度。回头一看,代码跟屎一样。果断重构! 重构 重新组织package,把功能抽象成三个主package,route --> service --> curds。路由层,处理请求参数层,数据库 curd层,使用elasticsearch,所以还有search。包之间的关系更加清晰了,也避免了之前包循环导入的问题 优化package内数据的可见性。golang根据名称首字母的大小写来控制可见性。在实现功能的过程中都是大写,以防别的包需要用到。写完之后自然需要将不导出的部分改成小写。 重命名。好的代码可以自己解释自己,注释是在代码无法解释自己的时候无奈的选择。《代码整洁之道》如是说。...阅读全文

博文 2018-12-18 19:34:45 Mandelbrot_Kobe

仔细研究 Go(golang) 类型系统

通过示例详解 Go 的类型系统 让我们从一个非常基本的问题开始吧! ## 为什么我们需要类型 在回答这个问题之前,我们需要先看看编程语言的一些原始抽象层,日常的工作我们并不需要处理这些层。 ### 我们如何才能获得数据的机器表示呢? ![](https://raw.githubusercontent.com/studygolang/gctt-images/master/A-Closer-Look-at-Go-Type-System/binary_zero_one.jpeg) 机器所能理解的是二进制 0 和 1。但对我们来说,意义何在?直到看到这样的东西,我才知道(有人是黑客帝国迷吗?) ![](https://raw.githubusercontent.com/studygolang/gct...阅读全文

博文 2019-03-11 12:13:48 Seek

golang实现文件的新增,删除,编辑,进行通知

### Go的文件系统通知 ** 文章转自go语言中文文档 [http://www.topgoer.com](http://www.topgoer.com/?from=studygolang "文章转自go语言中文文档http://www.topgoer.com") ** 官网地址:https://github.com/fsnotify/fsnotify fsnotify利用golang.org/x/sys而不是syscall从标准库。通过运行以下命令确保已安装最新版本: ``` go get -u golang.org/x/sys/... ``` ### 常问问题 当文件移到另一个目录时,仍在监视它吗? 不(不应该这样,除非您正在观看它的移动位置)。 当我查看目录时,是否也监视所有子目录?...阅读全文

博文 2020-02-11 14:37:33 lu569368

Golang中生成随机字符串并复制到粘贴板

前段时间在生活中偶尔需要对某些文件进行重命名,而且是随机名字,刚 开始是手动重命名然后在键盘上胡乱打一些字母数字,时间长了发现也挺麻烦的,于是想到能不能用golang实现这个功能并且自动把生成的字符串 复制到粘贴板,然后生成exe文件,要用的是直接鼠标双击就行。说干就干。 网上搜了些相关资料,于是写了出来。 安装必要的库 go get github.com/atotto/clipboard 代码实现 package main import ( "fmt" "github.com/atotto/clipboard" "math/rand" "strings" "time" ) var a = [...]string{"a", "b", "c", "d", "e", "f", "g", "h",...阅读全文

博文 2019-12-21 06:32:58 梅云罗

golang 类型-----没有markdown真是闹腾@51cto

1. 变量 2. 命名 3. 常量 4. 基本类型 5. 引用类型 6. 类型转换 7. 自定义类型变量Go语言有两种方式定义变量:var 关键字 := 短变量声明符var关键字var x int //自动初始化为0 var y = false //自动推断为bool类型和C语言不同,类型被放在变量名之后,并且在运行时,为了避免出现不可预测行为,内存分配器会初始化变量为二进制零值。 如果显示初始化变量的值,可以省略变量类型,由编译器推断。Go语言一次可以定义多个变量,并可以对其初始化成不同的类型,比如var x,y int //相同类型多个变量 var a, s = 10010, "hello go" //不同类型多个变量按照Go语言的编码规范,建议以组的方式整理多行变量定义,比如:var ...阅读全文

Linux 安装 golang 和 dep (附错两个误解决方法)

安装 Go 下载 在这里找想要安装的版本: https://golang.google.cn/dl/ 我下载了 1.13.7: wget https://dl.google.com/go/go1.13.7.linux-amd64.tar.gz 解压安装 tar -C /usr/local -xzf go1.13.7.linux-amd64.tar.gz 这一步需要 root 权限,非 root 用户要加 sudo sudo tar -C /usr/local -xzf go1.13.7.linux-amd64.tar.gz 配置环境变量 编辑 profile 文件 sudo vi /etc/profile 在文件末尾添加 export PATH=$PATH:/usr/local/go/bin...阅读全文

博文 2020-02-04 20:32:39 sxwxs

Go语言学习笔记 - 类型

序 一直在关注Golang的发展,最近Go 1.7也发布了,于是下定决心学习Golang。本文是《Go 学习笔记》摘录,同时加深对Golang理解。 变量 Golang是静态类型语言,因此不能在运行期改变变更的类型。 变量的定义采用 var 关键字,自动初始化为零值(如string的零值为空字符串,bool的零值为false,int的零值为0)。如果提供初始化值,则可省略变量类型,由编译器进行类型自动推断。 var x int var f float32 = 1.6 var s = "abc" 在函数的内部,可用更简略的 “:=” 方式定义变量 func main(){ x := 123 } 可以一次性定义多个变量。 var x, y, x int var s, n = "abc", 123...阅读全文

博文 2017-02-10 15:53:23 技术学习

先睹为快 ▏Kubernetes 1.5有哪些你不得不知的新功能?

今年9月份我们迎来了Kubernetes 1.4的惊喜发布,一大波新功能让人眼花缭乱。经过将近三个月时间的打磨,如今Kubernetes再推出新版本,翘首以盼的Kubernetes 1.5重磅发布,本次版本更新涵盖了**4个主题、12个新特性以及4个原有基础上的重大变更**。期待不如眼疾手快,翻阅文章内容,享受一场Kubernetes 1.5的饕餮大餐吧~ ## 主题简介: **1、StatefulSets (原名PetSets)** - StatefulSets 现在是 beta 版 (主要是修复和稳定性) **2、改善联邦支持** - 新命令:kubefed - DaemonSets - 部署 - Configmaps **3、简化集群部署*...阅读全文

ARTS 第19周

ARTS 第19周分享 [TOC] Algorithm 75. Sort Colors [medium] [题目描述] Given an array with n objects colored red, white or blue, sort them in-place so that objects of the same color are adjacent, with the colors in the order red, white and blue. Here, we will use the integers 0, 1, and 2 to represent the color red, white, and blue respectively. Example 1: Inp...阅读全文

博文 2019-08-11 19:32:39 陈卧虫

windows 安装 GRPC go版本

1. 安装 protobuf 下载 protoc-3.5.1-win32.zip 把解压后的 bin 目录下的 protoc.exe 放入到 GOBIN (go env 查看) 中 2. 安装 grpc Git clone https://github.com/grpc/grpc-go 将grpc-go文件夹重命名为grpc,放入到google.golang.org中,完整路径如下 C:\GOPATH\src\google.golang.org\grpc 3. 安装 genproto Git clone https://github.com/google/go-genproto 将go-genproto文件夹重命名为genproto,放到google.golang.org下,完整路径如下 C...阅读全文

博文 2018-12-14 17:34:42 butters001

Go 中的等效类型

![cover](https://raw.githubusercontent.com/studygolang/gctt-images/master/identical-type/cover.jpg) [Go 语言中的可赋值性(Assignability in Go)](https://studygolang.com/articles/12381)的第一个例子提到: > 如果右边的类型和 T 等价,那么赋值是完全可以(进行)的。 这可能听起来不值一提,但是有一些细节(值得注意)。深入这个主题可能同样有助于理解语言其它相关的基础概念。 ## 类型声明 有一个特殊的语句能够创建一个新的类型,那就是使用 type 关键字: ```go type A struct{ name string } typ...阅读全文

博文 2018-03-21 10:02:08 polaris

Effective Go小记一

英文原文:https://docs.huihoo.com/go/golang.org/doc/effective_go.html 阅读小记: 1、go语言使用gofmt统一编码风格,包括排列和缩进。 2、关于注释,文章建议每个package子句之前都应该有关于包的说明,每个方法之前同样要对该方法进行说明;以方便godoc抽取相关内容并展示。 3、命名在go中非常重要,比如首字母是否大写决定在程序包之外的可见性。文章建议包名字均使用小写,力求简洁,包本身是根据路径选择源路径,若包名冲突,可在程序中将冲突的包重命名。 另外,文件对传统上的getter和setter做了自己的观点,认为getter不需要加Get关键字,当然setter加Set关键字是合理的...阅读全文

博文 2019-04-14 22:34:44 Zhang小二

请教一个关于导入包的问题

自己写了一个包放在 %GOROOT%\src\ 下,完全自己用 ,没放GOPATH ,假设包名a,内有一函数A() ,我import然后用没问题。 然而 ,我新添了一个函数B() ,再import后试图使用B()的时候报错未定义 ,更改A功能也没用 ,功能还是原先的功能。 尝试用go自带的一些包工具修修补补也没用 , 重启了也不行 ,不知道咋整。 重命名包名 可以解决,但不重命名怎么处理呢?总不能改一次重命名一次呀。 新人初学Go 请各位不吝赐教...阅读全文

golang批量重命名图片

func RenamePic(c *gin.Context) { dir:="C:\\Users\\cixu\\Desktop\\100D5600-3" // 遍历文件夹,获取文件路径 paths := make([]string, 0) filepath.Walk(dir, func(path string, info os.FileInfo, err error) error { if !info.IsDir() { paths = append(paths, path) } return nil }) pattern:="" //重命名图片的前缀 // 遍历文件路径,修改文件名 for i, path := range paths { newPath := filepath.Join(...阅读全文

博文 2019-02-08 11:34:42 次序