從標準輸入中讀取資料
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 mainimport (
"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 mainimport (
"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 mainimport (
"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 這意味著在函式中定義的內部函式可以引用該...