私は答えを探してみた(私はこれが基本的なコンセプトだと思う)が、私は直接私に関連するものを見つけることができませんでした...だからここに私の投稿です。潜在的な変数スコープ(多分ポインタ)の混乱?わからない
私は現在、自分のサーバーからログファイルを解析しており、プロセスの一部を自動化するスクリプトを作成しています(新しいスキルを学んで、仕事を楽にするなど)。私は、各行を分割するための単純化されたパーサを構築しました。私は無関係なので、かなりのコードを省いています。ここで
は私の関数である:あなたが、私は別のセクションで「parsedDataSet」変数をプリントアウトするとき、それは別の保持見ることができるように
:ここ
var parsedDataSet = make(map[int][]string)
func parseData(dataSet []string) {
var tempArray []string
for index, element := range dataSet {
tempData := strings.Fields(element)
tempArray = append(tempArray, tempData[0], tempData[3][1:]+" "+tempData[4][:len(tempData[4])-1], tempData[5][1:], tempData[6], tempData[7][:len(tempData[7])-1], tempData[8], tempData[9])
parsedDataSet[index] = tempArray
fmt.Println(parsedDataSet[index])
tempArray = tempArray[:0]
}
fmt.Println("------")
fmt.Println(parsedDataSet[0])
fmt.Println(parsedDataSet[1])
fmt.Println(parsedDataSet[2])
fmt.Println(parsedDataSet[3])
}
は、サンプルの結果であり、値。上の "------"改行は、私が望む値です。以下は、 "for"ループの外側に表示されている値です。私はそれが "for"ループ内の値を割り当てているので、可変スコープに傾いています。しかし、私は代入のためにグローバル変数にアクセスしていますので、私はそれがグローバルスコープに伝わると仮定しています。
私はまだ新しくなっていますので、私はまだそれを愛する言語でかなり勉強しています。私は問題の周りに私の頭を包むことはできません。私はこれをPython(私の現在の言語)で書き直しましたが、これはほぼ同じように完全に正常に動作しました。
ありがとうございました!
再利用されている必要があります。これは、Goでのスライスの仕組みではありません。 https://blog.golang.org/slicesを読んで、Go to https://tour.golang.org/moretypes/6 ffをご覧ください。 – Volker
洞察をいただきありがとうございますが、私はツアー・オブ・ゴー・ノートと様々な作品をスタックオーバーフローで直接作りました。 :) スライスを使って何かを逃してしまったかどうかを調べてみましょう。ありがとう。 – teepleb