Go 语言入门指南:基础语法和常用特性解析(上) | 青训营

85 阅读3分钟

一、go语言介绍

Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。

二、第一个go语言程序

Hello World! 程序

package main //这个文件是程序的入口文件
import(
    "fmt" //导入标准库里的fmt包:主要是屏幕的输入输出以及格式化字符串
)
func main(){
    fmt.Println("Hello World!") //Println表示输出后会换行
}

三、go语言中的变量

3.1 变量的类型

1、bool类型:true和false;
2、数字类型,支持整型int和浮点型数字float,并且支持复数;
3、string字符串类型,是一串固定长度的字符连接起来的字符序列;
4、指针类型;
5、数组类型;
6、结构化类型;
7、Channel类型;
8、函数类型;
9、切片类型;
10、接口类型;
11、Map类型。

3.2变量的定义

1、使用var关键字

var 变量名字 变量类型

var age int = 20
//用var关键字定义多个变量
var (
    a bool
    b string
)
2、直接定义,会自动识别变量类型
age := 20
3、变量的交换

go语言变量的交换不像C语言需要再定义一个变量,和python相同

b,a = a,b

3.3、匿名变量

在Go语言中,匿名变量就是没有名字的变量;匿名变量不占用内存空间,不会分配内存,匿名变量与匿名变量之间也不会因为多次声明而无法使用。匿名变量的特点是一个下画线,“_”本身就是一个特殊的标识符,可以像其他标识符那样用于变量的声明或赋值,但任何赋给这个标识符的值都将被抛弃,因此这些值不能在后续的代码中使用,也不可以使用这个标识符作为变量对其它变量进行赋值或运算。

package main
import "fmt"
func abc()(int,int){
    return 1,2
}
func main(){
    x,y := abc()
    fmt.Println(x,y)
    
    //将y废弃
    x,_ := abc()
    fmt.Println(x)
    
    //将x废弃
    _,y := abc()
    fmt.Println(y)
}

3.4、局部变量和全局变量

变量分为局部变量和全局变量,局部变量的作用域可以理解为是在大括号里的,而全局变量是在所有大括号之外定义的,作用在整体。go语言程序中,全局变量和局部变量名称可以相同,但是函数体内的局部变量会被优先考虑。

四、go语言中的常量

常量是一个简单值的标识符,在程序运行时,不会被修改的量的类型只能是布尔型,数字型(整数型、浮点数和复数)和字符串。

4.1、常量的定义

使用const关键字
//定义过后的常量,其值不可再改变
const hello string = "hello world"//显式定义
~~hello = "abc"//会报错~~

const hello2 = "hello world"//默认推导常量类型是隐式定义

const a,b,c = 1,true,6.66666//可以同时定义多个常量

4.2特殊常量iota

第一个iota值默认为0,但每当iota在新的一行被使用时,它的值都会自动加1

const(
    a=iota//0
    b=iota//1
    c=iota//2
)

iota只会在const关键字再次出现时才会被重置为0,否则,在const括号内每新定义一个常量,iota都会累计加1

package main
import "fmt"
func main(){
    const(
        a=iota//iota=0
        //一组常量中,如果某个常量没有初始值,默认和上一行一样
        b//iota=1
        c//iota=2
        d//iota=3
        e=1//e=1  iota=4
        f=3//f=3  iota=5
        g//g=3  iota=6
        h//h=3  iota=7
        i=iota//iota=8
        j//iota=9
    )
    const(
        k=iota//0
        l//1
        m//2
    )
}

再续~