go语言基础之变量

目录

视频学习地址:Go零基础入门_在线视频教程-CSDN程序员研修院

[一. 单变量声明和赋值](#一. 单变量声明和赋值)

1、变量的声明

2、变量赋值

3、声明并赋值

[二. 多变量声明和赋值](#二. 多变量声明和赋值)

1、多变量声明

2、多变量赋值

[三. 变量声明赋值的简易写法](#三. 变量声明赋值的简易写法)

1、单变量简易写法

2、多变量简易写法

[四. 匿名变量和值拷贝](#四. 匿名变量和值拷贝)

1、匿名变量

2、值拷贝

五.命名规范

1、规则

2、go中的关键字

3、预定义的名字,用于内建的常量、类型和函数

4、语句分隔符


视频学习地址:Go零基础入门_在线视频教程-CSDN程序员研修院

一. 单变量声明和赋值

1、变量的声明

  1. 语法:var 变量名 类型

    package main

    import "fmt"

    func main() {
    // 变量声明:var 变量名 类型
    var age int
    fmt.Println(age)
    }

  2. 零值(默认值)

看下图,当你声明,没有赋值的时候,go会给你默认的值

复制代码
package main

import "fmt"

func main() {
	var age int
	var name string
	var bol bool
	fmt.Println(age) // 0
	fmt.Println(name) // ""
	fmt.Println(bol) // false
}

2、变量赋值

我们可以通过 = 这个符号进行赋值,并且可以进行多次赋值

复制代码
package main

import "fmt"

func main() {
	var age int
	fmt.Println(age)
	age = 18
	fmt.Println(age)
	age = 22
	fmt.Println(age)
}

3、声明并赋值

语法 var 变量名 [类型] = 值 ([类型]:代表类型可省略)

复制代码
package main

import "fmt"

func main() {
	//var name string = "xt"
	var name = "xt"
	fmt.Println(name)
}

二. 多变量声明和赋值

1、多变量声明

  1. 以逗号分隔

    package main

    import "fmt"

    func main() {
    var name1, name2, name3 string
    fmt.Println(name1, name2, name3)
    }

  2. 集合类型

    package main

    import "fmt"

    func main() {
    var (
    x int
    y string
    )
    fmt.Println(x, y)
    }

2、多变量赋值

复制代码
package main

import "fmt"

func main() {
	var name1, name2, name3 = "xt", "tx", "xtt"
	fmt.Println(name1, name2, name3)

	var (
		x  = 18
		y = "米"
	)
	fmt.Println(x, y)
}

三. 变量声明赋值的简易写法

1、单变量简易写法

  1. 语法 变量名 := 值

    package main

    import "fmt"

    func main() {
    //var age2 = 22
    // 简写
    age2 := 22
    fmt.Println(age2)
    }

  2. 注意点,简写的方式 不能写在全局(后面将作用域时,会再次说明)

    package main

    import "fmt"

    // 这个可以写在全局
    var str = "xt"
    // 不能这样写,会报错
    //p := "xt"

    func main() {
    //var age2 = 22
    // 简写
    age2 := 22
    fmt.Println(age2)
    }

2、多变量简易写法

  1. 语法

    package main

    import "fmt"

    func main() {
    t, u := 18, "heheheh"
    fmt.Println(t, u)
    }

  2. 注意点,以声明的变量,在不能再 :=

    package main

    import "fmt"

    func main() {
    t, u := 18, "heheheh"
    fmt.Println(t, u)
    // 报错
    //t := 20
    }

四. 匿名变量和值拷贝

1、匿名变量

  1. 定义:匿名变量即没有命名的变量,在使用多重赋值时,如果想要忽略某个值,可以使用匿名变量(anonymous variable)。 匿名变量用一个下划线_表示。

  2. 匿名变量不占用命名空间,不会分配内存

    package main

    import (
    "fmt"
    )

    func main() {
    a, b, c := 1, 2, 3
    fmt.Println(a,b,c)

    复制代码
     _, _, z := 4,5,6
     fmt.Println(z)

    }

    package main

    import "strconv"

    func main() {
    val, err := strconv.Atoi("10")
    if err != nil {
    return
    }
    print(val)
    }

2、值拷贝

复制代码
package main

import "fmt"

func main() {
	// 值拷贝
	var name1 = "tx"
	var name2 = name1
	name1 = "lxc"
	fmt.Println(name1)
	fmt.Println(name2)
}
  1. 交互两个变量的值

    package main

    import "fmt"

    func main() {
    // 交互变量
    val1, val2 := 1, 2
    //val1, val2 = 2, 1
    // 方式一
    //var val3 int
    //val3 = val1
    //val1 = val2
    //val2 = val3
    // 方式二
    val1, val2 = val2, val1

    复制代码
     fmt.Println(val1, val2)

    }

五.命名规范

1、规则

1、变量名称必须由数字、字母、下划线组成。

2、标识符开头不能是数字。

3、标识符不能是保留字和关键字。

4、建议使用驼峰式命名,当名字有几个单词组成的时优先使用大小写分隔

5、变量名尽量做到见名知意。

6、变量命名区分大小写

2、go中的关键字

复制代码
break        default          func           interface      select
case         defer            go             map            struct
chan         else             goto           package        switch
const        fallthrough      if             range          type
continue     for              import         return         var

3、预定义的名字,用于内建的常量、类型和函数

复制代码
// 内建常量:
    true false iota nil
// 内建类型:
    int int8 int16 int32 int64
    uint uint8 uint16 uint32 uint64 uintptr
    float32 float64 complex128 complex64
    bool byte rune string error
// 内建函数:
    make len cap new append copy close delete
    complex real imag
    panic recover

4、语句分隔符

复制代码
package main

import "fmt"

func main() {
	// 不推荐写法
	//var name = "xt";var age = 18
	//fmt.Println(name, age)

	// 	推荐写法
	var name = "xt"
	var age = 18
	fmt.Println(name, age)
}
相关推荐
tang7778912 分钟前
爬虫如何绕过绕过“5秒盾”Cloudflare:从浏览器指纹模拟到Rust求解之不完全指南
开发语言·爬虫·rust·cloudflare
Yuer202516 分钟前
什么是 Rust 语境下的“量化算子”——一个工程对象的最小定义
开发语言·后端·rust·edca os·可控ai
hqwest19 分钟前
码上通QT实战26--系统设置01-系统设置布局
开发语言·qt·qss·qt基础控件·qt布局控件·qt表格控件
薛定谔的猫198221 分钟前
llama-index Embedding 落地到 RAG 系统
开发语言·人工智能·python·llama-index
短剑重铸之日28 分钟前
《7天学会Redis》Day 5 - Redis Cluster集群架构
数据库·redis·后端·缓存·架构·cluster
计算机程序设计小李同学44 分钟前
基于SSM框架的动画制作及分享网站设计
java·前端·后端·学习·ssm
jghhh011 小时前
传递对准MATLAB仿真程序
开发语言·matlab
+VX:Fegn08951 小时前
计算机毕业设计|基于springboot + vue小型房屋租赁系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
Victor3562 小时前
Hibernate(43)Hibernate中的级联删除如何实现?
后端
Victor3562 小时前
Hibernate(44)Hibernate中的fetch join是什么?
后端