【从零开始学习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中声明的变量必须使用否则编译时会报错,如果想先起到占位的作用就需要它。


四.总结

在这里插入图片描述

发布了19 篇原创文章 · 获赞 6 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/weixin_46192679/article/details/104922322