关于main包放在哪的问题

关于main包放在哪的问题

据我所知,目前大部分人都会将main包直接放在src根目录,运行时使用 go run xxx.go 这种方式。当然如果需要生成可执行文件,就通过go build在当前目录生成一个可执行文件。LiteIDE也是这么做的(已经和作者提建议了)。 然而,将main包直接放在src根目录,不能用go install 安装成标准的 src pkg bin这样的结构。如果一个项目中有多个server呢?你这样就没法弄了,得分开成几个项目;然而这几个server之间可能有不少需要共享的东西,这样可能又得增加GOPATH。 另外,虽然main包文件直接在src根目录下可以通过go build生成可执行文件,但默认是生成在当前目录下的(可能污染源码),而不会生成到bin目录(除非自己参数指定)。实际上官方都建议将GOPATH的bin目录加入PATH(当然,好像这么做的不多) 我建议直接通过go instal…

阅读全文 阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (还没有人评分,赶紧评一下)
Loading...
标准库—XML处理(一)

标准库—XML处理(一)

在JSON还未像现在这么广泛使用时,XML的使用相当广泛。XML作为一种数据交换和信息传递的格式,使用还是很广泛的,现在很多开放平台接口,基本会支持XML格式。Go语言中提供了处理XML的标准库。下面我们一起来学习它。 一、encoding/xml包概述 该包实现了一个简单的XML 1.0 解析器(支持XML命名空间) 二、类型和函数 在看类型和函数之前,先看一下变量和常量 Header常量:由于Marshal生成的xml并不会生成XML标准头部,所以,定义了一个标准头常量 HTMLAutoClose变量:一些应该自动闭合的HTML标签。很明显,这是用来处理html的。这样的标签如:br、hr等 HTMLEntity变量:标准HTML字符实体的映射转换。(实体名=>实体编号) 可见,两个变量都是跟HTML相关的,之后会用到。 1、函数 func Escape(w io.Writer,…

阅读全文 阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (还没有人评分,赶紧评一下)
Loading...
GDB调试Go程序

GDB调试Go程序

说明:作为一门静态语言,似乎支持调试是必须的,而且,Go初学者喜欢问的问题也是:大家都用什么IDE?怎么调试? 其实,Go是为多核和并发而生,真正的项目,你用单步调试,原本没问题的,可能会调出有问题。更好的调试方式是跟PHP这种语言一样,用打印的方式(日志或print)。 当然,简单的小程序,如果单步调试,可以看到一些内部的运行机理,对于学习还是挺有好处的。下面介绍一下用GDB调试Go程序:(目前IDE支持调试Go程序,用的也是GDB。要求GDB 7.1以上) 以下内容来自雨痕的《Go语言学习笔记》(下载Go资源): 默认情况下,编译过的二进制文件已经包含了 DWARFv3 调试信息,只要 GDB7.1 以上版本都可以进行调试。 在OSX下,如无法执行调试指令,可尝试用sudo方式执行gdb。 删除调试符号:go build -ldflags “-s -w” -s:…

阅读全文 阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (还没有人评分,赶紧评一下)
Loading...
Go中map数据类型的一些知识

Go中map数据类型的一些知识

1、map数据类型初始化 两种方式:map[string]string{}或make(map[string]string) 2、未初始化的map是nil,它与一个空map基本等价,只是nil的map不允许往里面添加值。(A nil map is equivalent to an empty map except that no elements may be added) 因此,map是nil时,取值是不会报错的(取不到而已),但增加值会报错。 其实,还有一个区别,delete一个nil map会panic,但是delete 空map是一个空操作(并不会panic)(这个区别在最新的Go tips中已经没有了,即:delete一个nil map也不会panic) 3、通过fmt打印map时,空map和nil map结果是一样的,都为map[]。所以,这个时候别断定map是空还是nil,而应…

阅读全文 阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (还没有人评分,赶紧评一下)
Loading...
Go项目的目录结构

Go项目的目录结构

项目目录结构如何组织,一般语言都是没有规定。但Go语言这方面做了规定,这样可以保持一致性 1、一般的,一个Go项目在GOPATH下,会有如下三个目录: 其中,bin存放编译后的可执行文件;pkg存放编译后的包文件;src存放项目源文件。一般,bin和pkg目录可以不创建,go命令会自动创建(如 go install),只需要创建src目录即可。 对于pkg目录,曾经有人问:我把Go中的包放入pkg下面,怎么不行啊?他直接把Go包的源文件放入了pkg中。这显然是不对的。pkg中的文件是Go编译生成的,而不是手动放进去的。(一般文件后缀.a) 对于src目录,存放源文件,Go中源文件以包(package)的形式组织。通常,新建一个包就在src目录中新建一个文件夹。 2、举例说明 比如:我新建一个项目,test,开始的目录结构如下: 为了编译方便,我在其中增加了一个install文件,目录结构:…

阅读全文 阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (还没有人评分,赶紧评一下)
Loading...
模板库-text/template

模板库-text/template

一、数据结构 Template:代表一个解析过的模板 二、获取模板(Template)实例 三种方式: 1、template.New(name string) *Template 其实内部就简单的return &Template{name:name}; name标示模板(模板的名字) 2、template.ParseFiles(filenames …string) (*Template, error) 从一个或多个文件中读取要解析的文本生成模板类,并以第一个文件名作为模板名 注:文件可以是绝对路径或相对路径 3、tempplate.ParseGlob(pattern string) (*Template, error) 内部调用filepath.Glob来解析pattern对应的文件(正则匹配文件路径,可能会多个), 然后调用template.ParseFiles() …

阅读全文 阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (还没有人评分,赶紧评一下)
Loading...
学习Go包

学习Go包

学习一门语言,熟悉语言语法、规范等之后,应该学习语言的标准库。在Python中,会有一些函数来探究包的内容。在Go中,更多的是通过查看Go标准库文档来学习。 不仅要知其然,更要知其所以然。 实际写代码中,肯定需要用到很多标准库中的包,在学习阶段,可以在需要用某个包时,彻底学习这个包,掌握它。标准库中每个包的文档是学习包最好的资料,一定要仔细看明白。 Go包具体该怎么学了?以下是我自己的学习方法,仅供参考(以time包为例) 1、看文档中的Overview,整体上对该包有一个了解 从这知道,该包用于处理和显示日期和时间。日期都是公历。 2、看Index,关注函数和类型(函数是指不属于某种类型的func),不需要关注类型的方法(Variable和Constants需要大概关注) 1)定义了一些常量,表示时间格式 2)定义了Duration、Location、Month、ParseError、T…

阅读全文 阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (还没有人评分,赶紧评一下)
Loading...
设计Go包

设计Go包

这里以第三方包goptions为例说明:(只说核心数据结构) 1、定义数据结构(struct等),如FlagSet、Flag,以及数据结构对应的方法。(这里一般会提供实例化数据结构的方法,比如:NewFlagSet()) 一般地,依赖这些就可以供外部使用(一般会就该包的功能提供一个外部可用的入口) 比如,外部可以这么使用goptions这个包: options := struct{}{} flagSet := goptions.NewFlagSet(filepath.Base(os.Args[0]), &options) flagSet.Parse(os.Args[1:]) … 相当于自己实现了goptions包中的Parse()或ParseAndFail() 这样,每个调用者都得这么实现一次。 2、定义函数,提供给外部方便调用的接口; 即:将上面的封装成函数供使用者直…

阅读全文 阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (还没有人评分,赶紧评一下)
Loading...
Go语言学习园地开通了

Go语言学习园地开通了

Go语言推出已经有几年时间了,正式版推出也快一年了。Go语言社区还算活跃。 本人从2012年6月份开始接触Go,并在两、三个月后有幸在工作中使用Go语言进行软件开发。在这期间,学习了Go的一些知识,同时在Go语言QQ讨论群组和广大Go语言爱好者交流、探讨问题。 Go语言发展到现在,市面上已经有不少相关的书籍、资料。然而,深入Go语言方面的资料却很少。当然,肯定有大牛们对Go语言的标准库、原理很熟悉,只是没有将这些与大家分享,期待这些大牛将知识分享出来,为Go语言的推广做点贡献。 本网站的目的,一方面将自己所学的Go语言知识与大家分享;另一方面也希望有更多的大牛能够分享他们所学的Go语言知识。另外,网站中会转载一些好文章。大家可以一起参与这个网站,让这里成为学习Go语言的园地! 目前该网站使用WordPress搭建,后期会推出Go语言版本,有兴趣的可以一起参与哦☺

1 Star2 Stars3 Stars4 Stars5 Stars (还没有人评分,赶紧评一下)
Loading...