【從零開始學習Go語言】七.Go標識符之內置函數常量總結

【從零開始學習Go語言】七.Go標識符之內置函數常量總結


一. 內置函數

golang的內置函數共有十五個,不需要使用import引入便可以直接使用的函數。

  • make

make函數主要用來初始化和創建一個對象的,針對map(集合),slice(切片),channel(通道)類型,注意只支持這三種類型。

package main

func main() {
    var test_map map[string]string          //創建map集合
    test_map = make(map[string]string)      //初始化map(又或者叫實例化對象,我喜歡這麼理解,如果有錯誤歡迎指正)
    test_map["hello"] = " world"
    println(test_map["hello"])              //返回: world
}

  • new

new的功能與make所實現的功能基本一樣,可以實現“初始化”map,slice,channel,但它和make工作原理有很大區別,make可以爲一個默認值爲nil的類型初始化,初始化後這個值爲空,什麼都沒有,而new所實現的是指向一個新的變量或方法,函數的內存地址,併爲其創建默認值爲0,下面來看例子

package main

import (
    "fmt"
)

func main() {
    a := new(int)
    *a++
    fmt.Println(*a) //指針指向a的值
    fmt.Println(a)  //通過new創建的變量值本身爲指向他的內存地址
}
  • len

len函數可以得到數組,切片,map,string等類型的數據類型長度,注意這裏結構體(struct)int(整數型)和布爾型不能傳入len函數使用

package main

import "fmt"

func main() {
    a := "hello"
    fmt.Println(len(a)) //返回:5
}
//注意中文與英文所佔用的字節數不同,根據編碼的不同也不同,此處簡單演示,有興趣的可以自己研究一下
//golang的編碼默認爲utf-8,空格也算一個字節
  • cap

cap的功能是返回變量等類型的容量,這裏使用數組來簡單演示

package main

import (
    "fmt"
)

func main() {
    var my_slice = [4]int{1, 2, 3, 4}   //數組需要設置容量,容量長短是從1開始算起,而索引是0
    fmt.Println(cap(my_slice))          //返回:4
}
  • append

append爲添加內容到切片的尾部

package main

import (
    "fmt"
)

func main() {
    var my_slice = []int{1, 2, 4}
    my_slice = append(my_slice, 1, 2, 3, 2)
    fmt.Println(my_slice)
}
  • copy

主要用於複製數組,將第二個參數的數組切片複製到第一個數組切片中,如果長度不一樣,以短數組爲準。

package main

import (
    "fmt"
)

func main() {
    my_slice := []int{1, 2, 3}
    my_slice1 := []int{4, 5, 6}
    a := copy(my_slice, my_slice1)
    fmt.Println(a)          //返回:[4 5 6]
}
  • delete

用於刪除map的參數,參數對應map的key

package main

import (
    "fmt"
)

func main() {
    my_map := map[string]string{
        "hello": "world",
        "lo":    "ve",
    }
    fmt.Println(my_map)     //map[hello:world lo:ve]

    delete(my_map, "hello")
    fmt.Println(my_map)     //map[lo:ve]
}
  • panic

用於錯誤處理,執行到panic時會停止所有操作並打印從下向上的信息

package main

import (
    "fmt"
)

func main() {
    test()
}
func test() {

    a := 2
    b := 3

    if a > b {
        fmt.Println("good")
    } else {
        panic("error")              //如果遇到不符合條件的或你設置的非法操作便會打印錯誤,並會打印從“error”向上返回的函數棧
        println("hello world")      //未被打印
    }
}
  • recover

用於程序出現了異常,如果不去管它,那程序會直接掛掉,而recover的功能是捕獲異常,返回異常信息,並繼續執行下去

package main

var x = 1

func main() {
    Reset()
}
func Reset() {

    if x := recover(); x != 2 {
        panic("x is nil") 
    }
    println("hello world")      //可以自己嘗試panic後輸出信息,不會有任何輸出
}

  • close

用於關閉channel

  • print,println

屬於輸出到標準錯誤流中並打印,官方不建議寫程序時候用它,可以在debug時使用


二.常量標識符

  • true,false

bool類型的兩個常量值;真 or 假

  • iota

用在連續枚舉的聲明中,使用它可以記住變化的值

  • nil

指針或引用類型的變量默認值是nil


三.空白標識符

  • _

空白標識符,單獨拿出來說一下,一般是用來用來聲明一個空白變量,go中聲明的變量必須使用否則編譯時會報錯,如果想先起到佔位的作用就需要它。


四.總結

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章