go語言初步瞭解

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
// myNote1 project main.gopackage main//go語言中提供不同的包,相當於java中不同的類,來提供功能import (    "fmt")var ( // 這種因式分解關鍵字的寫法一般用於聲明全域變數    aa int    bb bool)func main() {    //輸出語句    fmt.Println("Hello World!")    //定義變數    var i int    i = 10    var j = "jjjjjjjjjjjj"    k := "kkkkkkkkkkk"    fmt.Println("變數:", i)    fmt.Println("變數:", j)    fmt.Println("變數:", k)    //定義多個變數    var s, u, g int    s, u, g = 10, 20, 30    fmt.Println("變數:", s)    fmt.Println("變數:", u)    fmt.Println("變數:", g)    var a, b, c = "aaa", "bbb", "ccc"    fmt.Println("變數:", a)    fmt.Println("變數:", b)    fmt.Println("變數:", c)    d, e, f := "ddd", "eee", "fff"    fmt.Println("變數:", d)    fmt.Println("變數:", e)    fmt.Println("變數:", f)    //全域變數    fmt.Println("全域變數:", aa)    fmt.Println("全域變數:", bb)    //擷取變數的記憶體位址    fmt.Println("記憶體位址:", &a)    //當申明了一個變數,但是卻沒有使用它,那麼會報jj declared and not used    //var jj string = "jk"    //定義常量 編程習慣都是以大寫字母來定義常量的    //const 定義特定類型的常量    const LEFT int = 100    const RIGHT = 200    const UP, DOWN = 300, 400    const (        BEFORE = 500        AFTER  = 600    )    fmt.Println("常量:", LEFT, RIGHT, UP, DOWN, BEFORE, AFTER)    //運算    var v, z int = 10, 20    fmt.Println("加法:", v+z)    fmt.Println("減法:", v-z)    fmt.Println("乘法:", v*z)    fmt.Println("除法:", v/z)    fmt.Println("取餘:", v%z)    fmt.Println("小於等於:", v <= z)    fmt.Println("等於:", v == z)    //if else elseif    if 10 == 10 {        fmt.Println("if語句")    }    if 10 == 20 {        fmt.Println("if語句")    } else {        fmt.Println("else語句")    }    //switch    jk := "a"    switch jk {    case "a":        fmt.Println("分支語句")        break    case "b":        fmt.Println("xxxxx")        break    default:        fmt.Println("--------")        break    }    var index = 1    for index < 4 {        fmt.Println("-------")        index++    }    var flat int = 3A:    index = 1    for index < 3 {        fmt.Println("xxxx")        index++    }    flat++    if flat < 5 {        goto A    }    testFun1()    testFun2(10, 20)    fmt.Println("函數返回:", testFun3(10, 20))    x, y := testFun4(10, 20)    fmt.Println("函數返回多個值:", x, y)    var arr [3]int    arr[0] = 1    arr[1] = 10    arr[2] = 32    {        var op int = 0        for op < len(arr) {            fmt.Println(arr[op])            op++        }    }    //不設定數組的大小    var arr1 = [...]float64{12.12, 34.2, 45.2}    fmt.Println(arr1)    var arr2 = [5]float32{11.23, 343.23, 34.5}    fmt.Println(arr2)    //資料結構指標    var in int = 100    fmt.Println("變數的地址", &in)    //定義指標 指向整數的指標    var ini *int    ini = &in    fmt.Println("指標擷取資料", *ini)    //null 指標    var ink *int    fmt.Println("判斷null 指標", (ink == nil))    //數組可以儲存同一類型的資料,但在結構體中我們可以為不同項定義不同的資料類型。說白了就是java中的一個類,用於建立對象的一個模板    type Book struct {        title string        num   int        names []float32        flag  bool    }    var book1 Book    book1.flag = true    book1.num = 10    book1.title = "曹雪坤"    book1.names = []float32{1000.0, 2.0, 3.4, 7.0, 50.0}    fmt.Println(book1)    //Go 數組的長度不可改變,在特定情境中這樣的集合就不太適用,Go中提供了一種靈活,    //功能強悍的內建類型切片("動態數組"),與數組相比切片的長度是不固定的,可以追加元素,在追加時可能使切片的容量增大。    //說白了就是java中的集合    //切片利用make建立:T 代表被建立的切片元素的類型。    //函數 make 接受一個類型、一個長度(建立切片時的初始化長度)和一個可選的容量參數。調用 make 時,內部會分配一個數組,然後返回數組對應的切片。    //var numbers []int = make([]int, 5, 5)    numbers := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}    fmt.Println(numbers)    fmt.Println("numbers[1:4] ==", numbers[1:4])    /* 預設下限為 0*/    fmt.Println("numbers[:3] ==", numbers[:3])    /* 預設上限為 len(s)*/    fmt.Println("numbers[4:] ==", numbers[4:])    fmt.Println("計算切片的容量:", cap(numbers))    fmt.Println("計算切片的長度:", len(numbers))    numbers = append(numbers, 13)    fmt.Println("追加元素後:", numbers)    //刪除下標為9的元素    numbers = append(numbers[:9], numbers[10:]...)    fmt.Println("刪除指定位置的元素後:", numbers)    //刪除切片的最後一個元素    numbers = append(numbers[:len(numbers)-1], numbers[len(numbers):]...)    fmt.Println("刪除切片的最後一個元素:", numbers)    fmt.Println("計算切片的長度:", len(numbers))    var number1 []int    if number1 == nil {        fmt.Println("切片是空的")    }    //建立map    var countryCapitalMap map[string]string    /* 建立集合 */    countryCapitalMap = make(map[string]string)    /* map 插入 key-value 對,各個國家對應的首都 */    countryCapitalMap["France"] = "Paris"    countryCapitalMap["Italy"] = "Rome"    countryCapitalMap["Japan"] = "Tokyo"    countryCapitalMap["India"] = "New Delhi"    fmt.Println(countryCapitalMap["India"])    /* 使用 key 輸出 map 值 */    for country := range countryCapitalMap {        fmt.Println("Capital of", country, "is", countryCapitalMap[country])    }    /* 查看元素在集合中是否存在 */    captial, ok := countryCapitalMap["India"]    /* 如果 ok 是 true, 則存在,否則不存在 */    if ok {        fmt.Println("Capital of India is----", captial)    } else {        fmt.Println("Capital of United States is not present")    }    //實現兩個結構體    var phone Phone    phone = new(IPhone)    phone.call()    phone = new(XiaoMi)    phone.call()}//函數func testFun1() {    fmt.Println("函數")}func testFun2(num1 int, num2 int) {    fmt.Println("函數參數", num1+num2)}//函數返回單個值func testFun3(num1 int, num2 int) int {    return num1 + num2}//函數返回多個值func testFun4(num1 int, num2 int) (int, int) {    return num1 + num2, num1 - num2}//定義介面 利用不同的結構體建立繼承該介面的不同的方法type Phone interface {    //介面中的方法    call()}//定義結構體type IPhone struct{}//定義介面中的方法func (iphone IPhone) call() {    fmt.Println("你用的手機是蘋果")}//定義另一個結構體type XiaoMi struct{}//定義介面中的方法func (xiaoMi XiaoMi) call() {    fmt.Println("你用的手機是小米: ")}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.