值得擁有的Go語言常用內(nèi)置包使用示例
Go語言內(nèi)置包
Go 語言作為一門快速、簡(jiǎn)潔的編程語言,擁有豐富的內(nèi)置包,這些包覆蓋了從文件處理到網(wǎng)絡(luò)通信的各個(gè)領(lǐng)域。
fmt 包:格式化輸入輸出
os 包:操作系統(tǒng)功能
net/http 包:HTTP 服務(wù)器和客戶端
time 包:時(shí)間和日期操作
encoding/json 包:JSON 數(shù)據(jù)的編解碼
sync 包:并發(fā)安全的同步原語
sort 包:排序切片和用戶自定義排序
strconv 包:字符串和基本數(shù)據(jù)類型之間的轉(zhuǎn)換
regexp 包:正則表達(dá)式
io 包:輸入輸出操作
math 包:數(shù)學(xué)函數(shù)和常量
strings 包:字符串操作
bufio 包:帶緩沖的 I/O 操作
1. fmt 包:格式化輸入輸出
fmt包提供了類似 C 語言 printf 和 scanf 的格式化輸入輸出函數(shù)
package main import "fmt" func main() { name := "Go語言" fmt.Printf("Hello, %s!\n", name) }
2. os 包:操作系統(tǒng)功能
os包提供了與操作系統(tǒng)進(jìn)行交互的功能,例如文件操作、環(huán)境變量等。
package main import ( "fmt" "os" ) func main() { hostname, err := os.Hostname() if err != nil { fmt.Println("Error:", err) } else { fmt.Println("Hostname:", hostname) } }
3. net/http 包:HTTP 服務(wù)器和客戶端
net/http包提供了 HTTP 服務(wù)器和客戶端的功能,可以用于構(gòu)建 Web 應(yīng)用程序。
package main import ( "fmt" "net/http" ) func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, Go HTTP server!") } func main() { http.HandleFunc("/", handler) http.ListenAndServe(":8080", nil) }
4. time 包:時(shí)間和日期操作
time包提供了時(shí)間和日期的操作,可以用于處理各種時(shí)間相關(guān)的任務(wù)。
package main import ( "fmt" "time" ) func main() { // 獲取當(dāng)前時(shí)間 now := time.Now() fmt.Println("Current Time:", now) // 格式化時(shí)間 formattedTime := now.Format("2006-01-02 15:04:05") fmt.Println("Formatted Time:", formattedTime) // 解析時(shí)間 timeStr := "2023-10-12 10:30:00" parsedTime, _ := time.Parse("2006-01-02 15:04:05", timeStr) fmt.Println("Parsed Time:", parsedTime) // 計(jì)算時(shí)間差 duration := parsedTime.Sub(now) fmt.Println("Time Difference:", duration) }
5. encoding/json 包:JSON 數(shù)據(jù)的編解碼
encoding/json包提供了 JSON 數(shù)據(jù)的編碼(序列化)和解碼(反序列化)功能。
package main import ( "encoding/json" "fmt" ) type Person struct { Name string `json:"name"` Age int `json:"age"` Email string `json:"email"` } func main() { person := Person{ Name: "Alice", Age: 30, Email: "alice@example.com", } // 編碼為JSON jsonData, err := json.Marshal(person) if err != nil { fmt.Println("Error:", err) return } fmt.Println("JSON Data:", string(jsonData)) // 解碼JSON var decodedPerson Person err = json.Unmarshal(jsonData, &decodedPerson) if err != nil { fmt.Println("Error:", err) return } fmt.Println("Decoded Person:", decodedPerson) }
6. sync 包:并發(fā)安全的同步原語
sync包提供了各種同步原語,用于在多個(gè) goroutine 之間進(jìn)行安全的數(shù)據(jù)共享和通信。
package main import ( "fmt" "sync" ) func main() { var wg sync.WaitGroup var mu sync.Mutex counter := 0 for i := 0; i < 10; i++ { wg.Add(1) go func() { defer wg.Done() mu.Lock() counter++ mu.Unlock() }() } wg.Wait() fmt.Println("Counter Value:", counter) }
7. sort 包:排序切片和用戶自定義排序
sort包提供了對(duì)切片進(jìn)行排序的功能,同時(shí)也支持自定義排序規(guī)則。
package main import ( "fmt" "sort" ) func main() { numbers := []int{4, 2, 7, 1, 9, 5} // 排序切片 sort.Ints(numbers) fmt.Println("Sorted Numbers:", numbers) // 自定義排序規(guī)則 fruits := []string{"apple", "banana", "orange", "grape"} sort.Slice(fruits, func(i, j int) bool { return len(fruits[i]) < len(fruits[j]) }) fmt.Println("Sorted Fruits by Length:", fruits) }
8. strconv 包:字符串和基本數(shù)據(jù)類型之間的轉(zhuǎn)換
strconv包提供了字符串和基本數(shù)據(jù)類型(例如 int、float64 等)之間的相互轉(zhuǎn)換功能。
package main import ( "fmt" "strconv" ) func main() { // 字符串轉(zhuǎn)整數(shù) numStr := "123" num, err := strconv.Atoi(numStr) if err != nil { fmt.Println("Error:", err) } else { fmt.Println("Parsed Integer:", num) } // 整數(shù)轉(zhuǎn)字符串 num = 456 numStr = strconv.Itoa(num) fmt.Println("Integer to String:", numStr) // 字符串轉(zhuǎn)浮點(diǎn)數(shù) floatStr := "3.14" floatNum, err := strconv.ParseFloat(floatStr, 64) if err != nil { fmt.Println("Error:", err) } else { fmt.Println("Parsed Float:", floatNum) } // 布爾值轉(zhuǎn)字符串 boolValue := true boolStr := strconv.FormatBool(boolValue) fmt.Println("Boolean to String:", boolStr) }
9. regexp 包:正則表達(dá)式
regexp包提供了正則表達(dá)式的功能,可以用于字符串的匹配和替換。
package main import ( "fmt" "regexp" ) func main() { text := "Hello, 12345 and 67890" pattern := "[0-9]+" re := regexp.MustCompile(pattern) matches := re.FindAllString(text, -1) fmt.Println("Matches:", matches) }
10. io 包:輸入輸出操作
io包提供了基本的輸入輸出接口和函數(shù),用于處理各種輸入輸出操作,包括文件、網(wǎng)絡(luò)、內(nèi)存等。
package main import ( "fmt" "io/ioutil" "os" "strings" ) func main() { // 寫入文件 data := []byte("Hello, Go IO!") err := ioutil.WriteFile("output.txt", data, 0644) if err != nil { fmt.Println("Error:", err) return } // 讀取文件 fileContent, err := ioutil.ReadFile("output.txt") if err != nil { fmt.Println("Error:", err) return } fmt.Println("File Content:", string(fileContent)) // 字符串讀寫 r := strings.NewReader("Hello, Go IO!") content, err := ioutil.ReadAll(r) if err != nil { fmt.Println("Error:", err) return } fmt.Println("Read String:", string(content)) // 標(biāo)準(zhǔn)輸入輸出 fmt.Print("Enter your name: ") var name string fmt.Scanln(&name) fmt.Println("Hello,", name) }
11. math 包:數(shù)學(xué)函數(shù)和常量
math包提供了各種數(shù)學(xué)函數(shù)和常量,包括三角函數(shù)、對(duì)數(shù)函數(shù)、常見常量等。
package main import ( "fmt" "math" ) func main() { // 計(jì)算正弦值 angle := math.Pi / 4 sinValue := math.Sin(angle) fmt.Println("Sin(π/4):", sinValue) // 計(jì)算自然對(duì)數(shù) x := 2.0 logValue := math.Log(x) fmt.Println("ln(2):", logValue) // 圓周率和平方根 fmt.Println("π:", math.Pi) fmt.Println("√2:", math.Sqrt(2)) }
12. strings 包:字符串操作
strings 包提供了對(duì)字符串的各種操作,包括拼接、切割、替換、查找等。
package main import ( "fmt" "strings" ) func main() { // 字符串拼接 str1 := "Hello" str2 := "Go" result := strings.Join([]string{str1, str2}, " ") fmt.Println("Joined String:", result) // 字符串切割 sentence := "Hello, Go Language" words := strings.Split(sentence, " ") fmt.Println("Words:", words) // 字符串替換 text := "Hello, World!" newText := strings.Replace(text, "World", "Go", -1) fmt.Println("Replaced Text:", newText) // 字符串查找 contains := strings.Contains(text, "Go") fmt.Println("Contains 'Go':", contains) }
13. bufio 包:帶緩沖的 I/O 操作
bufio 包提供了帶緩沖的 I/O 操作,可以提高讀寫文件的效率。
package main import ( "bufio" "fmt" "os" ) func main() { // 寫入文件 file, err := os.Create("output.txt") if err != nil { fmt.Println("Error:", err) return } defer file.Close() writer := bufio.NewWriter(file) writer.WriteString("Hello, bufio!") writer.Flush() // 讀取文件 reader := bufio.NewReader(file) content, _ := reader.ReadString('\n') fmt.Println("Read from File:", content) }
以上就是值得擁有的Go語言常用內(nèi)置包使用示例的詳細(xì)內(nèi)容,更多關(guān)于Go語言內(nèi)置包的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Golang中map的三種聲明定義方式實(shí)現(xiàn)
本文主要介紹了Golang中map的三種聲明定義方式實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02golang生成RSA公鑰和密鑰的實(shí)現(xiàn)方法
本文主要介紹了golang生成RSA公鑰和密鑰的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-08-08Golang并發(fā)發(fā)送HTTP請(qǐng)求的各種方法
在 Golang 領(lǐng)域,并發(fā)發(fā)送 HTTP 請(qǐng)求是優(yōu)化 Web 應(yīng)用程序的一項(xiàng)重要技能,本文探討了實(shí)現(xiàn)此目的的各種方法,從基本的 goroutine 到涉及通道和sync.WaitGroup 的高級(jí)技術(shù),需要的朋友可以參考下2024-02-02Go和RabbitMQ構(gòu)建高效的消息隊(duì)列系統(tǒng)
本文主要介紹了使用Go語言和RabbitMQ搭建一個(gè)簡(jiǎn)單的消息隊(duì)列系統(tǒng),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-01-01模塊一 GO語言基礎(chǔ)知識(shí)-庫(kù)源碼文件
這篇文章主要介紹了模塊一 GO語言基礎(chǔ)知識(shí)-庫(kù)源碼文件,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01