日常 Go語言聖經 查詢重複行

2021-09-07 17:40:56 字數 2088 閱讀 4443

從標準輸入中讀取資料

1.if語句條件兩邊也不加括號,但是主體部分需要加{}

2.map儲存了鍵/值(

key/value

)的集合,對集合元素,提供常數時間的存、取操作,

map[string]int ==> key

的型別string

和value

的型別int

3.內建函式

make

建立空map, counts := make(map[string]int)

4.bufio包

scanner

型別讀取輸入並將其拆成行或單詞

input := bufio.newscanner(os.stdin)

短變數宣告乙個

input變數

5.呼叫

input.scan()

,讀入下一行,在讀到一行時返回

true

,不再有輸入時返回

false

6.fmt.printf函式對一些表示式產生格式化輸出

注意:go語言中的

input.scan()

停止輸入是

eof終端情況下請使用 ctrl+d

檔案的是直接

cat input | go run main.go

dup1,go

package main

import (

"bufio"

"fmt"

"os"

)func main()

for line, n := range content

}

}

從檔案中讀取資料

1.os.open函式返回兩個值。第乙個值是被開啟的檔案

(*os.file)

2.os.open返回的第二個值是內建

error

型別的值,如果不等於內建值

nil(

null

)說明出錯了

3.使用

fmt.fprintf

表示列印任意型別預設格式值的動詞%v

4.map是乙個由

make

函式建立的資料結構的引用,作為引數傳遞給某函式時相當於引用傳遞

package main

import (

"bufio"

"fmt"

"os"

)func main() else

countlines(f, content)

//注意方法名的大小寫

f.close()

}

}

for line, n := range content

}

}//宣告乙個函式,實參型別:*os.file,content map[string]int

func countlines(f *os.file, content map[string]int)

}~

一口氣把全部輸入資料讀到記憶體中,一次分割為多行,然後處理它們

1.readfile函式(來自於

io/ioutil

包),其讀取指定檔案的全部內容,返回乙個位元組切片(

byte slice

),必須把它轉換為

string

2.strings.split函式把字串分割成子串的切片(來自於

strings包)

package main

import (

"fmt"

"io/ioutil"

"os"

"strings"

)func main()

msgs := strings.split(string(data), "\n")

for _, msg := range msgs

}

for line, n := range content

}

}

日常 Go語言聖經 Map習題

練習 4.8 修改charcount程式,使用unicode.isletter等相關的函式,統計字母 數字等unicode中不同的字元類別。練習 4.9 編寫乙個程式wordfreq程式,報告輸入文字中每個單詞出現的頻率。在第一次呼叫scan前先呼叫input.split bufio.scanwor...

查詢重複的行(Go語言)

我們在處理檔案的時候,很多時候會需要解決檔案拷貝 檔案列印 檔案搜尋 檔案排序 檔案統計類這一類問題,這類程式通常會有比較相似的結構,乙個處理輸入的迴圈,在每乙個輸入元素上執行計算處理,在處理的同時或者處理完成之後進行結果輸出。首先我們來書寫乙個dup程式輸出標準輸入流中的出現多次的行,在行內容前是...

日常 Go語言聖經 匿名函式習題

go語言聖經 匿名函式 1.擁有函式名的函式只能在包級語法塊中被宣告,通過函式字面量 function literal 我們可繞過這一限制,在任何表示式中表示乙個函式值 2.通過這種方式定義的函式可以訪問完整的詞法環境 lexical environment 這意味著在函式中定義的內部函式可以引用該...