今天我們要來介紹Go語言中的內建套件,這次主要會介紹io
、os
、net/http
這三個套件,這三個套件在Go語言中是非常常用的,也是我們在開發時會經常使用到的套件。
對於基本型別的slice,Go語言的sort套件提供了對slice的排序,例如對int, float64, string等等進行排序。下面是一些常用的sort套件的方法
intSlice := []int{3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5}
sort.Ints(intSlice)
fmt.Println(intSlice) // [1 1 2 3 3 4 5 5 5 6 9]
fmt.Println(sort.IntsAreSorted(intSlice)) // true
如果要對自訂的型別進行排序的話,可以使用sort.Slice
配合自訂Sort function來進行排序
其中Sort Function回傳值為bool
,當true
時表示i
小於j
,false
時表示i
大於j
,不過當less(i, j) == less(j, i)時視為i
與j
相等,因此只有當i
小於j
時才會進行排序
type Person struct {
Name string
Age int
}
people := []Person{
{"John", 30},
{"Alice", 25},
{"Bob", 35},
}
sort.Slice(people, func(i, j int) bool {
return people[i].Age < people[j].Age
})
fmt.Println(people) // [{Alice 25} {John 30} {Bob 35}]
io
套件提供了一個Reader
和Writer
的介面,這兩個介面是Go語言中最基本的介面之一,幾乎所有的I/O操作都是基於這兩個介面進行的。io
套件中還提供了一些實現了Reader
和Writer
介面的結構體,例如File
、Buffer
等等。
本來還有一個ioutil
套件,不過在Go 1.16之後已經被移除,所以現在我們只能使用io
套件來進行I/O操作。
io.Copy(dst Writer, src Reader) (written int64, err error)
: 將src
的內容複製到dst
中,並返回複製的字節數。io.ReadAll(r Reader) ([]byte, error)
: 從r
中讀取所有的內容,並返回一個byte
切片。io.WriteString(w Writer, s string) (n int, err error)
: 將string
寫入到w
中,並返回寫入的字節數。io.ReadAll(r Reader) ([]byte, error)
: 從r
中讀取所有的內容,並返回一個byte
切片。io.ReadFull(r Reader, buf []byte) (n int, err error)
: 從r
中讀取buf
的長度的內容,如果r
中的內容不夠長,則返回一個錯誤。io.Pipe() (*PipeReader, *PipeWriter)
: 創建一個PipeReader
和一個PipeWriter
,這兩個對象可以用來在兩個goroutine
之間進行通信。os
套件提供了一個File
結構體,這個結構體實現了io.Reader
和io.Writer
介面,所以我們可以通過os
套件來進行文件的讀寫操作。os
套件中還提供了一些其他的功能,例如文件操作、進程操作、環境變數操作等等。
os.Open(name string) (*File, error)
: 打開一個文件,並返回一個File
對象。os.Create(name string) (*File, error)
: 創建一個文件,如果文件已經存在,則會被覆蓋。os.Mkdir(name string, perm FileMode) error
: 創建一個目錄。os.RemoveAll(path string) error
: 刪除一個目錄,包括目錄中的所有文件和子目錄。os.Getwd() (dir string, err error)
: 獲取當前工作目錄。os.Chdir(dir string) error
: 改變當前工作目錄。os.Exit(code int)
: 結束當前進程。os.Getenv(key string) string
: 獲取環境變數的值。os.Setenv(key, value string) error
: 設置環境變數的值。os.LookupEnv(key string) (string, bool)
: 查找環境變數的值,如果不存在則返回false
。os.Environ() []string
: 獲取所有的環境變數。os.Stdin
: 標準輸入。os.Stdout
: 標準輸出。os.Stderr
: 標準錯誤輸出。os.Args
: 命令行參數。os.Hostname() (name string, err error)
: 獲取主機名。os.Getpid() int
: 獲取進程ID。os.Getppid() int
: 獲取父進程ID。os.ForkExec(argv0 string, argv []string, attr *ProcAttr) (pid int, err error)
: 創建一個新的進程。那麼今天的文章就到這告一段落,如果我的文章有任何地方有錯誤請在留言區反應
後面4天將會介紹Go語言的Gin框架與Gorm套件,這兩個套件是Go語言中非常流行的Web框架與ORM套件