原创 接口類型的合理運用

接口定義 在 Go 語言的語境中,當我們在談論“接口”的時候,一定指的是接口類型。因爲接口類型與其他數據類型不同,它是沒法被值化的,或者說是沒法被實例化的。 type 接口名 interface { 方法列表 } 接口類型聲明中的這

原创 結構體及其方法的使用法門

結構體表示的是實實在在的數據結構,一個結構體類型可以包含若干個字段,每個字段通常都需要有確切的名字和類型。結構體也可以不包含任何字段,即使這樣的結構體也是有意義的,因爲,我們可以爲結構體關聯上一些方法。 函數和結構體的區別 方法可以看

原创 使用函數的正確姿勢

在Go語言中,函數是一等公民,函數類型也是一等的數據類型。簡單來說,這意味着:函數不但可以用於封裝代碼,分割功能,解耦邏輯,還可以化身爲普通的值,在其他函數間傳遞、賦予變量、做類型判斷和轉換等等。 package main impor

原创 channel的高級玩法

單向通道 我們在說“通道”時一般說的都是雙向通道,即:既可以發也可以收的通道。這裏的“發”和“收”是站在操作通道的代碼的角度說的。 所謂單向通道,就是隻能發不能收,或者只能收不能發的通道。 定義單向通道 var uselessChan =

原创 channel的基本操作

激動,終於學到了Go最初吸引我的知識了。 channel作爲Go語言最有特色的數據類型,和goroutine並駕齊驅,共同代表了Go語言獨有的併發編程模式和編程哲學: Don't communicate by sharing memo

原创 map的操作和約束

Go語言的字典類型其實就是一個哈希表的特定實現。字典的鍵的類型是受限的,元素的類型可以是任意類型。 字典的鍵爲什麼受限呢? 典的鍵-元素對的增刪改查的操作,就是哈希表的映射過程。 以查找爲例: 在哈希表中查找與某個鍵值對應的元素值

原创 什麼是類型別名?什麼是潛在類型?

別名類型 在Go語言裏,可以用type聲明自定義的各種類型。在這些自定義的類型中,有一種被叫做別名類型。 舉個例子: type MyString = string 這句代碼的意思是:MyString是string類型的別名類型。顧名思義,

原创 數組和切片

對比學習數組和切片 數組的長度是固定的,切片是可變長的。 數組的類型字面量中必須有元素的類型和長度。數組的長度在聲明的時候必須給定,並且之後不會再改變,數組的長度是其類型的一部分。比如[1]string和[2]string就是2個不同的數組

原创 類型轉換有哪些需要注意的地方

類型轉換的語法:T(x)。 其中T叫做目標類型,x叫做源值,可以是一個變量,也可以是一個代表值的常量,還可以是一個單值的表達式。x的類型叫做源類型。 Go語言規範中規定了哪些從源類型到目標類型的轉換是合法的,編譯器會幫我們檢查出這些不合法的

原创 怎樣判斷一個變量的類型?

package main import "fmt" var container = []string{"zero", "one", "two"} func main() { container := map[int]string{0

原创 go build命令使用體驗

首先是代碼目錄結構 demo4.go package main import "flag" var name string func init() { flag.StringVar(&name, "name", "everyone

原创 Go代碼目錄結構

GOPATH下的src目錄就是開發程序的主要目錄,所有的源碼文件都在這個目錄下。 約定俗成的做法是:src目錄下的一個子目錄就是一個應用包或者可執行應用。例如:$GOPATH/src/mymath表示mymath是一個應用包或者可執行應用,

原创 把命令源碼文件中的代碼拆分到其他代碼包

我們只關注框出來的2個源碼文件 demo5.go package main import "flag" //這裏需要填寫 var name string func init() { flag.StringVar(&name, "n

原创 GOROOT,GOPATH,GOBIN

go的安裝和設置不再贅述。 GOROOT go的安裝目錄(/usr/local/go) GOPATH go工作環境中常常用到的一個很重要的環境變量。 GOPATH的值可以是一個目錄的路徑,也可以是包含多個目錄的路徑,每個目錄都代表G

原创 啓動docker-compose報錯:Couldn't connect to Docker daemon at http+docker://localhost - is it running? 原

這個問題出現呢,是因爲用戶權限問題。解決方法有2個: 切換爲root用戶執行命令。sudo docker-compose up -d  將當前用戶加入到docker組。 sudo gpasswd -a ${USER} docker 然後切