go語言學習初探(二)基礎語法

變量聲明
var v1 int
var v2 string
var v3 [10]int
var v4 []int
var v5 struct {
    f int
}
var v6 *int
var v7 map[string] int
var v8 func(a int) int

   基本變量類型分爲:int、string、數組、切片數據(動態長度數組)、結構體、指針、Map、函數等。

   var 簡化寫法,例子:編程

var (
    v1 int
    v2 string
)
變量初始化
var v1 int = 10
var v2 = 10
v3 := 10

   v1 爲正常方式。v2 & v3 能夠自動推導類型。v3的方式不能做用於全局變量。
   警告::= 左側的變量不能夠提早聲明,好比 var v1 = 10; v1 := 10;該寫法會致使編譯器報錯。segmentfault

匿名變量
package helloworld

func getName() (string, string, string, string) {
    firstName := "firstName"
    lastName := "lastName"
    nickName := "nickName"
    middleName := "middleName"
    return firstName, lastName, nickName, middleName
}
package main

import (
    "fmt"
)

func main(){
    _, _, _, middle := getName()
    fmt.Println(middle)
}

// print -> "middleName"
常量
package main

import (
    "fmt"
)

func main(){
    const NAME = "name"
    fmt.Println(NAME)
}

  常量是指編譯期間就已知且不可改變的值。常量能夠是數值類型(包括整型、浮點型和複數類型)、布爾類型、字符串類型等。數組

預約義常量閉包

true
false
iota // 常量計數器
枚舉
const (
    Sunday = iota
    Monday    
    Tuesday    
    Wednesday    
    Thursday    
    Friday    
    Saturday    
    numberOfDays        // 這個常量沒有導出
)

   Go 語言中,以大寫字母開頭的常量在包外可見。numberOfDays 該常量只能在包內可用。函數

數據類型

基礎數據類型學習

布爾類型:bool
整型:int八、byte、int1六、int、uint、uintptr等
浮點類型:float3二、float64
複數類型:complex6四、complex128
字符串:string
字符類型:rune
錯誤類型:error

   int8:取值範圍爲 -128~127ui

複合數據類型this

指針(pointer)
數組(array)
切片(slice)
字典(map)
通道(chan)
結構體(struct)
接口(interface)
數值運算
+
-
*
/
%
比較運算符
>
>=
<
<=
==
!=
位運算
x << y  左移    124 << 2    // 結果爲496
x >> y  右移    124 >> 2    // 結果爲31
x ^ y   異或    124 ^ 2     // 結果爲126
x & y   與      124 & 2     // 結果爲0
x | y   或      124 | 2     // 結果爲126
^x      取反    ^2          // 結果爲-3
遍歷字符串
package main

import (
    "fmt"
)

func main() {
    str := "hello 世界!"
    for _, s := range str {
        fmt.Println(string(s))
    }
}
數組及數組切片
arr1 := [5]int{1,2,3,4,5}
arr2 := []int{}

   數組長度在定義以後,不能更改。數組切片能夠。指針

流程控制
條件語句:if-else & else-if
選擇語句:switch & case & select
循環語句:for & range
跳轉語句:goto
其餘關鍵字:break & continue & fallthrough

條件語句 if-elsecode

package main

import (
    "fmt"
)

func main() {
    a := 1
    if a > 3 {
        fmt.Println("a > 3")
    } else {
        fmt.Println("a > 3 is fail")
    }
}

  警告:有返回值的函數中,if-else控制語句中不容許直接return

選擇語句 switch

package main

import (
    "fmt"
)

func main() {
    i := 0
    switch i {
    case 0:
        fmt.Println("0")
    case 1:
        fmt.Println("1")
    case 2:
        fmt.Println("2")
    }
}
// print -> "0"

循環語句 for

package main

import (
    "fmt"
)

func main() {
    for i := 0; i < 10; i++ {
        fmt.Println(i)
    }
}
// print -> 1 ~ 9
函數
func (參數列表)(返回值列表) {
    函數體 & 返回語句
}

不定參數

package main

import (
    "fmt"
)

func myFunc(args ...int) {
    for _, i := range args {
        fmt.Println(i)
    }
}

func main() {
    myFunc(1, 2, 3, 4)
}
// print -> 1 2 3 4

  警告:...type格式的類型只能做爲函數的參數類型存在,而且必須是最後一個參數

匿名函數
func(a, b int) int{}

// 執行匿名函數
func(a,b int) int{}(1, 2)

// 賦值
f := func(a ,b int) int{}
閉包
package main

import (
    "fmt"
)

func main() {
    i := 5

    f := func() func() {
        j := 10
        return func() {
            fmt.Println(i, j)
        }
    }()

    f()

    i = 10

    f()
}
// print -> 5   10
// print -> 10  10
錯誤處理
package main

import (
    "errors"
    "fmt"
)

func main() {
    err := errors.New("this is a bug")
    fmt.Println(err)
}
// print -> "this is a bug"

下一篇 go語言學習初探(三)面向對象編程

相關文章
相關標籤/搜索