golang学习笔记3-变量的声明

注:本人已有C,C++,Python基础,只写本人认为的重点。

一、变量的三种声明方式

go 复制代码
func main() {
	//方式1,指定数据类型,声明后若不赋值,使用默认值
	//比如int的默认值是0,string的默认值是空串
	var i int = 1
	//方式2,类型推导,根据值自行判定变量类型
	var num = 10.11
	//方式3,省略var的类型推导(短变量声明)
	//下面的方式与var name string;name = "tom"等价
	name := "tom"
}

特别注意 :go的局部变量声明后,若它再次被赋值,不算使用!会报错!只有该变量放在等号右边或用于函数调用才算使用。变量在等号右边的情况有两种:一是赋值自己,比如自增,二是赋值给其他变量。

二、多变量的声明

go 复制代码
func main() {
	//方式1,指定数据类型,从左到右依次赋值,下同
	var n1, n2, n3 int = 1, 2, 3
	//方式2,类型推导
	var n1, name , n3 = 100, "tom", 888
	//方式3,省略var的类型推导(短变量声明)
	n1, name , n3 := 100, "tom~", 888
}

曾经有道面试题,给定两个变量,要求不使用中间变量的情况下交换它们。有种方法是a=a+b;b=a-b;a=a-b;其实不用这么麻烦,只需一句就行了,这也是python的语法:a,b=b,a。

三、全局变量的声明

go 复制代码
package main

import "fmt"

//定义全局变量
var n = 100
var name = "jack"

//上面的声明方式,也可以改成一次性声明
var (
	n2    = 300
	name2 = "mary"
)

func main() {
}

特别注意 :全局变量无法用短变量声明,必须显示赋值!

相关推荐
传奇开心果编程4 分钟前
【SwiftUI提高练中学】第8课 网络层架构:拦截器、重试、缓存与离线优先
学习·macos·ui·ios·swiftui
一条破秋裤5 分钟前
内核驱动的意义与课程学习规划
学习
Bug收容所1 小时前
学习LangChain day1
学习·langchain·llm·agent
传奇开心果编程1 小时前
【现代声明式UI学与练】第7课 组件通信——父传子、子传父、跨层级通信、状态提升与 Context
学习·flutter·react native·ui·swiftui·android jetpack
Seraphina361 小时前
SQL注入(二)盲注
网络·数据库·经验分享·笔记·sql
白山编程大哥2 小时前
Carsim 2024.1 专业安装介绍:功能特性与应用场景详解
笔记
hss123456782 小时前
整装落地与效果图差距有多大?从毫米级误差到ENF板材的量化拆解
笔记
我命由我123452 小时前
Photoshop - Photoshop 矢量蒙版
学习·职场和发展·产品运营·求职招聘·职场发展·产品经理·photoshop
熊猫钓鱼>_>3 小时前
越顺,越空:当 AI 把学习 “优化“ 到消失
人工智能·学习·ai·llm·agent·ai编程·metaai
一条破秋裤3 小时前
02_注册设备号_从主次设备号到成对注销
学习