Go知識点記録

6757 ワード

importパッケージの名前
importのカバンは名前を付けられます。
import l 4 g「code.google.com/p/log 4 go」
testingのErrorとFatalの違い
Error:Log()+Fail()  現在のエラーを記録して失敗しましたが、実行を続けます。
Fatal:Log()+FailNow()は現在のエラーを記録し、失敗として記録し、実行を継続しない
path.ran使用
パスに使用する
http://www.cnblogs.com/などでフィルタリングし、修正ファイルを作成する際に使用する必要があります。
go list allはすべてのカバンを並べられます。
go buildの時のエラー分析
出現する場合:
warning:building out-off-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ユーザーかどうかを判断する。
方法:
O.Geteuid()0
Goプログラムをより速くするためのいくつかの知識:
1ゴミの回収言語を持参するなら、メモリの使用状況を考慮しなければなりません。
ゴミの回収は必ずプログラムの時間を使うので、メモリを使うのは必然的に小さいほどいいです。
2メモリコードの割り当てには注意が必要です。
それは必ず最終的にゴミの回収につながります。
3 goの中で[]byteとstringの転化は実際に一回メモリコピーを行いましたので、変換しないところはなるべく変えないでください。
4はできるだけ持参したオフィシャルバッグを使います。テストサポートがある限り、公式パッケージの代わりに自分のカバンを簡単に使用しないでください。
go test-run=regexp file_を使用できます。test.goはあるテストを実行するための用例を制定します。
どのようにgoの様々なパスを取得しますか?
1ユーザの現在のパスを実行します。
O.Getwd()
2実行プログラムの場所:
プログラムファイルの相対パスを実行:
file,_:=exec.Look Path(os.Args[0])
プログラムを実行するための絶対パス:
(次の方法を使う)

1
2
3
4
5
6
7file, _ := 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
18package mainimport(        "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/test2013/02/06 11:09:07 current path: /home/yejianfeng2013/02/06 11:09:07 exec  path: handcode/test2013/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
22package 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
10content, 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    }本論文は署名-非商業的使用3.0ライセンス契約に基づいて発表し、転載、演繹を歓迎するが、本明細書の署名葉剣の峰を保持しなければならない。http://www.cnblogs.com/yjf512/)を使用してはならず、商業目的に使用してはならない。何か質問や授権に関する協議があれば、私に連絡しますをお願いします。
 
カテゴリ: 
Go