Golang 基礎文法-基本變數(2)

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

Golang 基礎文法-基本變數(2)

變數的零值說明

  • 數實值型別變數的零值為 0
  • 布爾類型變數的零值為 false
  • 字串類型變數的零值為 "”

變數的類型轉換文法

golang 中不同類型之間的變數賦值需要顯式的轉換

//文法格式 T(v) 將 v 轉換為 類型 Tvar i int = 32var f float64 = float64(i)var u uint = uint(64)

變數的定義(聲明)

  • 使用 var 聲明
    無論在函數內還是函數外,都可以使用 var 聲明變數

    基本文法格式為:
    var varName varType
    var varName = varValue
    var varName1, varName2 varType
    var varName1, varName2 = varValue1, varValue2

    在基本文法格式上可以進行一些靈活組合,但是建議不要用花哨的文法

    //聲明但是不初始化(foo 的值為對應變數類型的零值)var foo int;//聲明且初始化(var聲明初始化的時候不需要指定變數類型,編譯器自動根據初始化值確定變數類型)var bar  = 3 //推薦寫法var bar int = 3 //合法但是不推薦//聲明 i1, i2 為 int 類型(初始值為 int 類型的零值 0)var i1, i2 int//聲明 i1 和 i2同時賦值為1,2var i1, i2 = 1, 2//聲明 int 類型的 i1,string 類型的 s1var i1, s1 = 1, "a"//聲明一組全域變數,變數可以初始化或者不初始化var(    i1, i2 = 1, 2    i3, i4 int    s1 = "111221"    b1 = true)
  • 快捷文法
    只能在函數體內使用快捷文法,函數體外非法

    文法格式
    varName1 := varValue1

    func main(){    //聲明變數 i1並且同時給變數賦值    i1 := 1    //聲明變數 i2,s1並且同時給他們賦值    i2, s1 := 1, "11"}
  • var聲明和快捷文法聲明需要注意的地方

    便捷聲明方法是聲明一個新的變數且賦值,不能用作給 var 聲明的變數賦值

    var foo = 1func main(){    foo := 10    //輸出10 使用的局部變數取值    fmt.Println(foo)    //PS: 一定要注意下面有語法錯誤    var bar int    bar := 11   //便捷方式其實是先聲明一個新變數然後給賦值,但是此時 bar 變數已經存在了不能重複定義}

特殊變數 _

變數 _ 用來拋棄忽略某個值,golang 中不允許存在沒有使用的變數

  • 函數多傳回值拋棄

    _, r := divide(10, 3)
  • 匯入包不使用(但是會調用匯入包的 init方法)

    import(    "fmt"    _ "os")

常量

常量是指變數一旦定義,在編譯階段它的值就是確定了的,在運行階段是不可以被改變的,golang 中 number|boolean|string 類型可以定義為常量

定義文法
const constantName = value
cosnt constantName constantType = value

const PI = 3.14const Pi float32 = 3.14156

變數類型

golang 中的 基本變數類型主要為 number,bool,string等

Boolean

關鍵詞 bool 用於定義 boolean類型變數,boolean 類型變數的取值只有 truefalse, 零值(預設值)為 false
golang 不允許把 boolean 類型轉變為數字類型

數字類型(Numerrical)

Integers

golang 不允許類型不同的變數進行運算,例如 int8類型的變數和 int32類型的變數不能進行加法操作

  • signed

    • int 長度取決於作業系統,32位作業系統是32位,64位作業系統是64位
    • rune 它是int32的別名
    • int8
    • int16
    • int32
    • int64
  • unsigned

    • uint
    • byte 它是 uint8的別名
    • uint8
    • uint16
    • uint32
    • uint64

浮點型

注意沒有 float 這個類型

  • float32
  • float64

複數(Complex)

  • complex128
  • complex64

字串(string)

goalng 使用 UTF-8作為編碼結合,使用 " 或者 ` 包裹起來的字元就是一個 string
` 定義多行字串

var s1 = "hello"var s2 = `helloword`

string 對象不允許改變值(但是可以給重新賦值),下面的語法錯誤

var s = "hello"s[0] = 'c'

如果要改變一個變數的值,需要使用舊的變數建立

s := "heloo"c := byte(s) //string 轉換為[]byte 類型c[0] = 'c's2 := string(c) //把 c []byte 轉為 stringfmt.Printf("%s\s\n", s2)

+ 可以用來拼接兩個字串

s := "hello, "m := "world"a := s + mfmt.Printf("%s\n", a)//輸出 "cello, "s = "c" + s[1:] //返回 "c" + s從索引1到結束的字串拼接

Error(golang 內建,其他語言沒有的)

golang沒有 try-catch 語句塊處理異常,內建了 error 類型用於處理錯誤

err := errors.New("some error messaage")if err != nil {    //TODO something}

其他

  • 分組定義
    如果你想定義多個常量,變數或者匯入多個包,可以使用分組格式

    //以下是非分組形式import "fmt"import "os"const i = 100const pi = 3.145var i intvar pi float32var prefix string//分組形式import(    "fmt"    "os")const(      pi = 3.145    prefix = "GO")var(    pi float32    prefix string)
  • iota 枚舉

    關鍵字 iota 可以產生枚舉類型,枚舉值從0開始,每次加1

const(        //x == 0        x = iota        //y == 1        y = iota         //z == 2        z = iota         //如果常量名稱後面沒有任何錶達式        //則 w 等價於 w = iota, w == 3        w    )    const v = iota //v == 0    //PS 注意在同一行時的 iota 特殊情況    const(        //如果 iota 在同一行,則 e == f == g == 0        e, f, g = iota, iota, iota     )
  • 變數的可見度

    • 任何以大寫字母開頭的變數都是可以被匯出的,即在包外能被訪問,
    • 函數或者常量大寫字母開頭的,也是可以被匯出的,包外可以訪問的
    • golang 中沒有 public 或者 private 來控制變數函數常量等的可見度,通過變數函數常量的名稱的首字母是否大小寫來判斷
package test//Foo 在包 test 之外可以通過 test.Foo 訪問var Foo//bar 在包 test 之外通過 test.bar 訪問是錯誤的,因為它的首字母是小寫,包外不可見var bar//函數在test 包外可以使用 test.Test1()訪問func Test1(){}//函數在 test 包外不可以通過 test.test2()訪問,只可以在包內使用func test2(){}//包外使用 test.I訪問Const I = 1// j 不可以在包外通過 test.j 訪問cont j = 10
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.