2、golang入门-变量和常量

一、变量

1. 变量的声明

Go语言中的变量需要声明后才能使用,同一作用域内不支持重复声明。 并且Go语言的变量声明后必须使用。

全局变量是允许声明但不使用,局部变量声明不使用会报错

var name string
var age int
var isOk bool
// 批量声明
var (
    a string
    b int
    c bool
    d float32
)

2. 变量的初始化

Go语言在声明变量的时候,会自动对变量对应的内存区域进行初始化操作。每个变量会被初始化成其类型的默认值,例如:

  • 整型和浮点型变量的默认值为0。
  • 字符串变量的默认值为空字符串。
  • 布尔型变量默认为false。
  • 切片、函数、指针变量的默认为nil
var name string = "Q1mi"
var age int = 18

// 类型省略
// 编译器会根据等号右边的值来推导变量的类型完成初始化
var name = "Q1mi"
var age = 18

// 一次初始化多个变量
var name, age = "Q1mi", 20

 

package main

import "fmt"

var m = 200

func main() { // main函数,是程序执行的入口
	n := 10
	m := 100
	x, _ := foo()
	_, y := foo()
	fmt.Println("x=", x)
	fmt.Println("y=", y)
	fmt.Println(m, n)
	fmt.Println("Hello World!") // 在终端打印 Hello World!
}
func foo() (int, string) {
	return 10, "hello"
}

注意事项:

  1. 函数外的每个语句都必须以关键字开始(var、const、func等)
  2. :=不能使用在函数外。
  3. _多用于占位,表示忽略值。
package main

var x, y int
var (  // 这种因式分解关键字的写法一般用于声明全局变量
    a int
    b bool
)

var c, d int = 1, 2
var e, f = 123, "hello"

//这种不带声明格式的只能在函数体中出现
//g, h := 123, "hello"

func main(){
    g, h := 123, "hello"
    // 0 0 0 false 1 2 123 hello 123 hello
    println(x, y, a, b, c, d, e, f, g, h)
}

 

// 交换变量 两个变量的类型必须是相同。 
a, b = b, a,

// 空白标识符 _ 也被用于抛弃值,如:
_, b = 5, 7

二、常量

常量在定义的时候必须赋值

常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型

const pi = 3.1415
const e = 2.7182

const (
    pi = 3.1415
    e = 2.7182
)

// const同时声明多个常量时,如果省略了值则表示和上面一行的值相同
const (
    n1 = 100
    n2
    n3
)

常量可以用len(), cap(), unsafe.Sizeof()函数计算表达式的值。常量表达式中,函数必须是内置函数,否则编译不过。

package main

import "fmt"

func main() {
   const LENGTH int = 10
   const WIDTH int = 5  
   var area int
   const a, b, c = 1, false, "str" //多重赋值

   area = LENGTH * WIDTH
   fmt.Printf("面积为 : %d", area) // 面积为 : 50
   println()
   println(a, b, c)   // 1 false str
}

三、iota

 iota在const关键字出现时将被重置为0。const中每新增一行常量声明将使iota计数一次(iota可理解为const语句块中的行索引)。

const (
	n1 = iota //0
	n2        //1
	n3        //2
	n4        //3
	)

// 使用_跳过某些值
const (
	n1 = iota //0
	n2        //1
	_
	n4        //3
	)

//iota声明中间插队
const (
	n1 = iota //0
	n2 = 100  //100
	n3 = iota //2
	n4        //3
	)
const n5 = iota //0

const (
            a = iota   //0
            b          //1
            c          //2
            d = "ha"   //独立值,iota += 1
            e          //"ha"   iota += 1
            f = 100    //iota +=1
            g          //100  iota +=1
            h = iota   //7,恢复计数
            i          //8
    )

//一行定义多个值
const (
	a, b = iota + 1, iota + 2 //1,2
	c, d                      //2,3
	e, f                      //3,4
)

 

 

 

参考文档:

1. https://www.liwenzhou.com/posts/Go/01_var_and_const/

2. https://www.runoob.com/go/go-variables.html

posted on   不出世不入世什么都不是  阅读(36)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示