Go知识点记录

import包命名

import的包可以给它命名

import l4g "code.google.com/p/log4go"

testing的Error和Fatal的区别

Error : Log() + Fail()  即记录当前错误,记录为失败,但是继续执行

Fatal : Log() + FailNow() 即记录当前错误,记录为失败,不继续执行

path.Clean使用

path.Clean用于对路径

../../等进行过滤,在创建修改文件的时候需要使用到,否则会有漏洞

go list all 能列出所有的包

go build的时候的错误分析

如果出现:

warning: building out-of-date packages:

runtime/pprof

testing

regexp/syntax

regexp

installing these packages with 'go test -i' will speed future tests.

 

那么就是说明下面的包已经有修改过了,但是没有重新install

如果有标准的包过期,使用go install -a -v std来进行更新

如果是自定义的包过期,重新调用go install

linux下获取进程信息是使用/proc/pid/

判断当前用户是否是root用户

方法:

os.Geteuid() != 0

使Go程序更快的几个知识:

1 如果是自带垃圾回收的语言,你必须要考虑内存使用情况。

由于垃圾回收必然占用程序时间,所以占用内存必然越小越好。

2 分配内存代码需要注意。

它必然最终导致垃圾回收

3 go中[]byte和string的转化实际上是进行了一次内存复制,所以能不用转换的地方尽量不要转换

4 尽量使用自带的官方包。除非有测试支持你写的代码比官方的快,否则不要轻易使用自己的包来代替官方包。

可以使用go test -run=regexp file_test.go 来制定运行某个测试用例

如何获取go的各种路径:

1 执行用户当前所在路径:

os.Getwd()

2 执行程序所在路径:

执行程序文件相对路径:

file, _ := exec.LookPath(os.Args[0])

执行程序所在的绝对路径:

(使用下面一套方法)


1

2

3

4

5

6

7

file, _ := exec.LookPath(os.Args[0])

log.Println("file:", file)

 dir,_ := path.Split(file)

 log.Println("dir:", dir)

 os.Chdir(dir)

 wd, _ := os.Getwd()

 log.Println("wd:", wd)

比如这个程序


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

package main

import(

        "os"

        "log"

        "os/exec"

        "path"

)

func main() {

        file, _ := os.Getwd()

        log.Println("current path:", file)

        file, _ = exec.LookPath(os.Args[0])

        log.Println("exec path:", file)

        dir,_ := path.Split(file)

        log.Println("exec folder relative path:", dir)

        os.Chdir(dir)

        wd, _ := os.Getwd()

        log.Println("exec folder absolute path:", wd)

}

可执行文件我放在/home/yejianfeng/handcode/test

我执行的路径是/home/yejianfeng/

返回结果:


1

2

3

4

5

[yejianfeng@openstack ~]$ handcode/test

2013/02/06 11:09:07 current path: /home/yejianfeng

2013/02/06 11:09:07 exec path: handcode/test

2013/02/06 11:09:07 exec folder relative path: handcode/

2013/02/06 11:09:07 exec folder absolute path: /home/yejianfeng/handcode

从文件中json解析

尽量使用os.OpenFile直接获取reader,然后再从reader中使用Decoder来解析json

比如


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

package main

 

import (

    "fmt"

    "encoding/json"

    "os")

 

func main() {

    pathToFile := "jsondata.txt"

 

    file, err := os.OpenFile(pathToFile, os.O_RDONLY, 0644)

    if err != nil {

        fmt.Println(err)

        os.Exit(1)

    }

 

    configs := make(map[string]map[string][]Service, 0)

    err = json.NewDecoder(file).Decode(&configs)

    if err != nil {

        fmt.Println(err)

        os.Exit(1)

    }}

别使用


1

2

3

4

5

6

7

8

9

10

content, err := ioutil.ReadFile(filepath)

    if err != nil {

        return nil, err

    }

 

    configs := make(map[string]map[string][]Service, 0)

    err = json.Unmarshal(content, configs)

    if err != nil {

        return nil, err

    }

时间: 2024-11-05 12:06:14

Go知识点记录的相关文章

PHP操作XML的知识点记录(DOMDocument)

1.XML文件内容  代码如下 复制代码 <?xml version="1.0" encoding="utf-8"?> <phoneBook>     <person>         <name>吴边</name>         <tel>13222053785</tel>     </person>     <person>         <na

Android GPS定位测试(附效果图和示例)

本人做了GPS相关的嵌入式软件已经几年了,所以说起要做个测试GPS定位模块的程序,第一反应就是串口读取GPS模块的数据,然后解析GPS的NMEA格式数据   今天因为工作需要,把以前编写的一个GPS测试程序拿出来重新修改了一下.这个程序说起来有些历史了,是我11年编写的,那时候学了Android 开发没多久,算是一个实验性的作品.现在工作需要,重新拿出来修整.同时发现我对android的GPS服务了解并不深,所以今天特意阅读了有关GPS服 务的一些资料,把相关知识点记录下来. 本人做了GPS相关

【SSH系列】-- Hibernate持久化对象的三种状态

       在上一篇博文中,小编主要简单的介绍了[SSH系列]--hibernate基本原理&&入门demo,今天小编来继续介绍hibernate的相关知识, 大家知道,Java对象的生命周期,是从通过new语句创建开始,到不再被任何引用变量引用结束,结束后它占用的内存将被JVM垃圾回收机制收回.在hibernate中持久化类的对象可以划分为三种状态,分别是瞬态,持久态,脱管态.       一.瞬态(Transient),也叫临时态.处于这种状态的对象具备的特征如下:       a.

字符编码详解——彻底理解掌握编码知识,“乱码”不复存在

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://polaris.blog.51cto.com/1146394/377468  每一个程序员都不可避免的遇到字符编码的问题,特别是做Web开发的程序员,"乱码问题"一直是让人头疼的问题,也许您已经很少遇到"乱码"问题,然而,对解决乱码的方法的内在原理,您是否明白?本人作为一个程序员,在字符编码方面同样遇到不少问题,而且一直对各种编码懵懵懂懂.不清不楚:

Android 定位服务

今天因为工作需要,把以前编写的一个GPS测试程序拿出来重新修改了一下.这个程序说起来有些历史了,是我11年编写的,那时候学了Android开发没多久,算是一个实验性的作品.现在工作需要,重新拿出来修整.同时发现我对android的GPS服务了解并不深,所以今天特意阅读了有关GPS服务的一些资料,把相关知识点记录下来. 本人做了GPS相关的嵌入式软件已经几年了,所以说起要做个测试GPS定位模块的程序,第一反应就是串口读取GPS模块的数据,然后解析GPS的NMEA格式数据.NMEA是一种标准化数据格

Android WebView播放视频flash(判断是否安装flash插件)

Android WebView播放flash(判断是否安装flash插件)  最近帮一个同学做一个项目,断断续续的一些知识点记录一下.一个页面中有一个WebView,用来播放swf,如果系统中未安装flash插件,必须提示用户到market中安装. 下面做一个demo,效果图如下: 首先布局文件,很简单: [html] view plaincopy <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/andro

Android GPS定位测试(附效果图和示例)_Android

今天因为工作需要,把以前编写的一个GPS测试程序拿出来重新修改了一下.这个程序说起来有些历史了,是我11年编写的,那时候学了Android开发没多久,算是一个实验性的作品.现在工作需要,重新拿出来修整.同时发现我对android的GPS服务了解并不深,所以今天特意阅读了有关GPS服务的一些资料,把相关知识点记录下来. 本人做了GPS相关的嵌入式软件已经几年了,所以说起要做个测试GPS定位模块的程序,第一反应就是串口读取GPS模块的数据,然后解析GPS的NMEA格式数据.NMEA是一种标准化数据格

Android使用WebView播放flash的方法_Android

本文实例讲述了Android使用WebView播放flash及判断是否安装flash插件的方法.分享给大家供大家参考.具体实现方法如下: 一.问题: 最近帮一个同学做一个项目,断断续续的一些知识点记录一下.一个页面中有一个WebView,用来播放swf,如果系统中未安装flash插件,必须提示用户到market中安装. 二.解决方法: 下面做一个demo,效果图如下: 图1: 图2: 图3: 首先布局文件,很简单: 复制代码 代码如下: <RelativeLayout xmlns:android

CSDN2015博客之星评选之拉票环节

       最近接到CSDN邀请,参加了CSDN 2015博客之星 的评选活动,下面是给我拉票的链接地址: http://vote.blog.csdn.net/blogstar2015/candidate?username=qq446282412         我的宣言         从最初开始学习软件编程,遇到问题时百度经常看到在CSDN上有相关的问题解决方法,慢慢的开始喜欢上CSDN这个网站.每天都有博主孜孜不倦的写着自己学到的知识点或者遇到问题的解决方法,然后通过博客的方式分享出来.