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
7
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
私が実行する経路は/home/yejianfeng/です。
結果を返します
?
1
2
3
4
5
できるだけ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
?
1
2
3
4
5
6
7
8
9
10
カテゴリ:
Go
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
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
}
本論文は署名-非商業的使用3.0ライセンス契約に基づいて発表し、転載、演繹を歓迎するが、本明細書の署名葉剣の峰を保持しなければならない。http://www.cnblogs.com/yjf512/)を使用してはならず、商業目的に使用してはならない。何か質問や授権に関する協議があれば、私に連絡しますをお願いします。カテゴリ:
Go