日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

1. hello-world

package main
import "fmt"

func main(){
fmt.Println("Hello world, Go Go!");
fmt.Printf("type of Hello is %Tn", "Hello")
}

package main--每一個Go文件都應該在開頭進行package name的聲明(注:只有可執行程序的包名為main)。包用于代碼的封裝與重用,這里包名為main。位于第一行。

import "fmt"--導入fmt包,下面代碼要使用。

2. 注釋

單行注釋://

多行注釋:/* */

3. 空白符

_在Go中被用作空白符,可以表示任何類型的任何值。

4. 類型

布爾:bool // true,false

字符串:string

數字類型:int8,int16,int32,int64,int

uint8,uint16,uint32,uint64,uint

float32,float64

complex64,complex128

byte

rune

注:int,根據不同的底層平臺,表示32或64位整型。除非對整形的大小有特定的需求,否則通常應該使用int表示整型。

注:byte是uint8的別名,rune是int32的別名。

注:+操作符用于拼接字符串。

5. 類型轉換

Go有著非常嚴格的強類型特征,沒有自動類型提升或類型轉換,不允許將一種類型的變量賦值給另一種類型的變量。

若要類型轉換,需要顯式類型裝換,如int(f)等。

i := 60.5
j := 50
sum := i + float64(j)

自聲明類型也不能和相同原類型混合使用:

    var str string = "Hello"
    type myString string
    var customName myString = "world"
    customName = str  // 不允許

6. 格式說明符

%T:打印變量的類型

%v:打印變量的值

fmt.Printf("type of sum is %Tn", sum)

7. sizeof

Go的unsafe包提供一個Sizeof函數,該函數接收變量并返回它的字節大小。unsafe包應該小心使用,因為使用unsafe包可能帶來可移植性問題。

8. 變量

var name type
name = initalvalue
var name type = initalvalue
var name = initalvalue  // 類型推斷
var name1, name2 type = initalvalue1, initalvalue2
var (
name1 = initalvalue1
name2 = initalvalue2
)   // 一條語句聲明不同類型變量
name := initalvalue   // 簡短聲明用:=

注:簡短聲明要求:=操作符左邊的所有變量都要有初始值;要求:=操作符的左邊至少有一個變量是尚未聲明的。

注意:Go語言中定義的變量必須被用到,否則會報錯。

9. 常量

雙引號中的任何值都是Go中的字符串常量。

無類型的常量有一個與它們相關聯的默認類型,并且當且僅當一行代碼需要時才提供它。在聲明中 var name = "Sam" , name需要一個類型,它從字符串常量 Sam 的默認類型中獲取。

const a = 5
var intVar int = a
var int32Var int32 = a
var float64Var float64 = a
var complex64Var complex64 = a
fmt.Println("intVar", intVar, "nint32Var", int32Var, "nfloat64Var", float64Var, "ncomplex64Var", complex64Var)

a 的值是 5 ,a 的語法是通用的(它可以代表一個浮點數、整數甚至是一個沒有虛部的復數),因此可以將其分配給任何兼容的類型。這些常量的默認類型可以被認為是根據上下文在運行中生成的。 var intVar int = a 要求 a 是 int,所以它變成一個 int 常量。 var complex64Var complex64 = a 要求 a 是 complex64,因此它變成一個復數類型。

10. 函數

func functionname(parametername1 type, parametername1 type) returntype {  
    // 函數體(具體實現的功能)
}

如果有連續若干個參數,它們的類型一致,那么我們無須一一羅列,只需在最后一個參數后添加該類型。

從函數中可以返回一個命名值。一旦命名了返回值,可以認為這些值在函數第一行就被聲明為變量了。

func rectProps(length, width float64)(area, perimeter float64) {  
    area = length * width
    perimeter = (length + width) * 2
    return // 不需要明確指定返回值,默認返回 area, perimeter 的值
}

11. 包

包用于組織Go源代碼,提供了更好的可重用性和可讀性。

屬于某一個包的源文件都應該放置于一個單獨命名的文件夾里。按照 Go 的慣例,應該用包名命名該文件夾。

導出名字

在 Go 中,任何以大寫字母開頭的變量或者函數都是被導出的名字。其它包只能訪問被導出的函數和變量。

init函數

所有包都可以包含一個 init 函數。init 函數不應該有任何返回值類型和參數,在我們的代碼中也不能顯式地調用它。init 函數的形式如下:

func init() {  
}

init 函數可用于執行初始化任務,也可用于在開始執行之前驗證程序的正確性。

包的初始化順序

首先初始化包級別(Package Level)的變量

緊接著調用 init 函數。包可以有多個 init 函數(在一個文件或分布于多個文件中),它們按照編譯器解析它們的順序進行調用。

如果一個包導入了另一個包,會先初始化被導入的包。盡管一個包可能會被導入多次,但是它只會被初始化一次。

空白標識符

導入了包,卻不在代碼中使用它,這在 Go 中是非法的。有兩種處理方法:

1)錯誤屏蔽器。在導入包后,用空白符引用包的變量。var _ = rectangle.Area

2)導入包語句前使用空白符。_"geometry/rectangle"

12. 條件判斷

if condition {  
} else if condition {
} else {
}

if statement; condition {  
}

注:else 語句應該在 if 語句的大括號 } 之后的同一行中。如果不是,編譯器會不通過。

13. 循環

for是Go語言中唯一的循環語句。Go中沒有while和do while循環。

for initialisation; condition; post {  
}

其中initialization和post可以省略,而只使用condition

for i <= 10 { //semicolons are ommitted and only condition is present
   fmt.Printf("%d ", i)
   i += 2
}

若condition也省略則表示無限循環。

14. switch

基礎用法和C語言相似,包含switch…case…case…default。

通過用逗號分隔,可以在一個 case 中包含多個表達式。 case 1,2, 3, 4, 5:

switch中表達式可省略。如果省略表達式,則表示這個 switch 語句等同于 switch true,并且每個 case 表達式都被認定為有效,相應的代碼塊也會被執行。

    num := 75
    switch { // 表達式被省略了
    case num >= 0 && num <= 50:
        fmt.Println("num is greater than 0 and less than 50")
    case num >= 51 && num <= 100:
        fmt.Println("num is greater than 51 and less than 100")
    case num >= 101:
        fmt.Println("num is greater than 100")
    }

在 Go 中,每執行完一個 case 后,會從 switch 語句中跳出來,不再做后續 case 的判斷和執行。使用 fallthrough 語句可以在已經執行完成的 case 之后,把控制權轉移到下一個 case 的執行代碼中。

    switch num := number(); { // num is not a constant
    case num < 50:
        fmt.Printf("%d is lesser than 50n", num)
        fallthrough
    case num < 100:
        fmt.Printf("%d is lesser than 100n", num)
        fallthrough
    case num < 200:
        fmt.Printf("%d is lesser than 200", num)
    }

fallthrough 語句應該是 case 子句的最后一個語句。如果它出現在了 case 語句的中間,編譯器將會報錯:fallthrough statement out of place

分享到:
標簽:golang
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定