学习go语言编程系列之定义变量
package main
import (
"fmt"
"math"
)
func main() {
// 1. 定义变量名age,不初始化,使用对应类型的默认值
var age int
fmt.Println("My age is", age)
// 2. 给变量赋值
age = 29
fmt.Println("My age is", age)
age = 50
fmt.Println("My age is", age)
// 3. 定义变量时初始化值
var height int = 160
fmt.Println("My height is", height)
// 4. 变量类型推断: 定义变量时不用明确指定变量类型,而是根据初始化值推断变量类型
var weight = 130
fmt.Println("My weight is", weight)
// 5. 可以同时定义多个变量值
// 同时定义多个变量并初始化值
var myage, myheight int = 29, 160
fmt.Println("My age is", myage, ", and my height is", myheight)
// 5.1 如果在同时定义多个变量时初始化值,可以不用明确指定变量类型,根据变量值推断变量类型
var hisage, hisheight = 29, 170
fmt.Println("His age is", hisage, ", and his height is", hisheight)
// 5.2. 当然,也可以同时在定义变量之后再进行赋值
var herage, herheight int
herage = 30
herheight = 170
fmt.Println("Her age is", herage, ", and her height is", herheight)
// 5.3. 另外,可以同时定义多个变量值,并赋不同类型的值
var (
name_ = "cccc"
age_ = 29
height_ int
)
fmt.Println("name_ is", name_, ", age_ is", age_, ", height_ is", height_)
// 6. go语言还提供了一种简洁的变量定义方式,通过操作符":="实现
// 在这种方式下,定义变量时不能使用var符号: 要求,必须同时对所有定义变量赋值, 否则报错
_name, _age := "dddd", 31
fmt.Println("_name is", _name, ",_age is", _age)
// 如下定义报错:未同时对定义的多个变量赋值
__name, __age := "eeeee"
fmt.Println("__name is", __name, ", __age is", __age)
// 另外,在这种方式下,操作符":="左边的变量:要求至少有一个是最新定义的
i, j := 10, 11
fmt.Println("i=", i, ",j=", j)
j, k := 12, 13 // 操作符左边的k变量是最新声明的,满足"至少有一个变量时新定义的"条件
fmt.Println("j=", j, ",k=", k)
j, k := 14, 15 // 操作符左边的变量都是已经定义过的,不满足"至少有一个变量时新定义的"条件,运行时报错
fmt.Println("j=", j, ",k=", k)
// 7. 变量初始化值还可以是表达式值
a, b := 10.0, 11.1
c := math.Min(a, b)
fmt.Println("a=", a, ", b=", b, ", and c=", c)
// 8. 变量一但被赋值,类型就确定了,不能再赋值其他类型的值
ok := 20
fmt.Println("ok is", ok)
ok = "Hello" // 变量ok的类型一旦赋值之后就确定,不能再赋值其他类型的值了
fmt.Println("学习GO语言变量定义完毕!")
}
学习go语言编程系列之定义变量的更多相关文章
- 学习go语言编程系列之helloworld
1. 下载https://golang.org/dl/ # Go语言官网地址,在国内下载太慢,甚至都无法访问.通过如下地址下载:https://golangtc.com/download. 2. 安装 ...
- 如何轻松学习C语言编程!
C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...
- 珍藏的C语言编程系列教程
本文有332个文字,大小约为2KB,预计阅读时间1分钟 这是本人珍藏的C语言.C++系列教程. 相信每个Coder的第一门编程语言就是C语言吧, 现在也依然很热门,不谈了.直接上链接,感兴趣的直接存, ...
- case中定义变量
1.c语言switch/case中定义变量 case 0: int b = 0 ; printf("0");break; case 1: printf("1" ...
- fatal error LNK1169: 找到一个或多个多重定义的符号或多个.c/.cpp文件想同时调用定义在.h文件里面的全局变量,防止重定义变量问题。
为什么.h文件中不能定义全局变量? 原因: 存在多次创建变量.如果头文件中可以定义全局变量,那么每个包含该头文件的文件里都会有该全局变量的定义.因为C语言的include是直接将文件嵌入到includ ...
- C#中的函数式编程:递归与纯函数(二) 学习ASP.NET Core Razor 编程系列四——Asp.Net Core Razor列表模板页面
C#中的函数式编程:递归与纯函数(二) 在序言中,我们提到函数式编程的两大特征:无副作用.函数是第一公民.现在,我们先来深入第一个特征:无副作用. 无副作用是通过引用透明(Referential ...
- 学习ASP.NET Core Razor 编程系列九——增加查询功能
学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...
- C#编译器优化那点事 c# 如果一个对象的值为null,那么它调用扩展方法时为甚么不报错 webAPI 控制器(Controller)太多怎么办? .NET MVC项目设置包含Areas中的页面为默认启动页 (五)Net Core使用静态文件 学习ASP.NET Core Razor 编程系列八——并发处理
C#编译器优化那点事 使用C#编写程序,给最终用户的程序,是需要使用release配置的,而release配置和debug配置,有一个关键区别,就是release的编译器优化默认是启用的.优化代码 ...
- ES6学习笔记(一)新的变量定义命令let和const
1.一些历史 ES6(ECMAScript 6.0)是 JavaScript 语言的新一代标准,于2015 年 6 月正式发布,距今已经4年了,它的目标,是使得 JavaScript 语言可以用来编写 ...
随机推荐
- 从App业务逻辑中提炼API接口
2.1 从App业务逻辑中提炼API接口 业务逻辑思维导图 功能-业务逻辑思维导图 基本功能模块关系 功能模块接口UML(设计出API) 在设计稿标注API 编写API文档 2.2 设计API的要点 ...
- linux中shell脚本引用另一shell脚本
调用有三种方法: 1.fork:不同的shell,调用后返回父shell,子shell从父shell中继承变量,但子shell的变量不会带回父shell,直接用path/to/file.sh调用: 2 ...
- Android多种方法显示当前日期和时间
文章选自StackOverflow(简称:SOF)精选问答汇总系列文章之一,本系列文章将为读者分享国外最优质的精彩问与答,供读者学习和了解国外最新技术.本文探讨Android显示当前日期和时间的方法. ...
- django后台密码错误
如果你忘记了设置Django的Admin密码,那么你可以使用createsuperuser来甚至密码,但是如果你忘记了Admin的密码的话,那么就要用Django shell: 1 python ma ...
- 新建WINDOWS服务C#
当前作业环境 Windows8.1 | Visual Studio 2013 一. 建立项目,选择"Windows服务"模板 二. 查看生成的项目,结构很像WinForm的项目,其 ...
- 「JLOI2015」管道连接 解题报告
「JLOI2015」管道连接 先按照斯坦纳树求一个 然后合并成斯坦纳森林 直接枚举树的集合再dp一下就好了 Code: #include <cstdio> #include <cct ...
- nginx日志分析 GoAccess
也可以生成json:goaccess -q -f web.log -a -p /home/yejianfeng/.goaccessrc -o json >test.json 和csvgoacce ...
- prufer序列学习笔记
prufer序列是一个定义在无根树上的东西. 构造方法是:每次选一个编号最小的叶子结点,把他的父亲的编号加入到序列的最后.然后删掉这个叶节点.直到最后只剩下两个节点,此时得到的序列就是prufer序列 ...
- 微信支付退款(PHP后端)
应用场景 当交易发生之后一段时间内,由于买家或者卖家的原因需要退款时,卖家可以通过退款接口将支付款退还给买家,微信支付将在收到退款请求并且验证成功之后,按照退款规则将支付款按原路退到买家帐号上. 微信 ...
- 随机总数字里面选取随机数字进行随机排序案例(JAVA实现)
随机总数字里面选取随机数字进行随机排序案例,案例如下: 代码code: package com.sec; import java.util.Arrays; import java.util.Scann ...