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语言编程系列之定义变量的更多相关文章

  1. 学习go语言编程系列之helloworld

    1. 下载https://golang.org/dl/ # Go语言官网地址,在国内下载太慢,甚至都无法访问.通过如下地址下载:https://golangtc.com/download. 2. 安装 ...

  2. 如何轻松学习C语言编程!

    C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...

  3. 珍藏的C语言编程系列教程

    本文有332个文字,大小约为2KB,预计阅读时间1分钟 这是本人珍藏的C语言.C++系列教程. 相信每个Coder的第一门编程语言就是C语言吧, 现在也依然很热门,不谈了.直接上链接,感兴趣的直接存, ...

  4. case中定义变量

    1.c语言switch/case中定义变量   case 0: int b = 0 ; printf("0");break; case 1: printf("1" ...

  5. fatal error LNK1169: 找到一个或多个多重定义的符号或多个.c/.cpp文件想同时调用定义在.h文件里面的全局变量,防止重定义变量问题。

    为什么.h文件中不能定义全局变量? 原因: 存在多次创建变量.如果头文件中可以定义全局变量,那么每个包含该头文件的文件里都会有该全局变量的定义.因为C语言的include是直接将文件嵌入到includ ...

  6. C#中的函数式编程:递归与纯函数(二) 学习ASP.NET Core Razor 编程系列四——Asp.Net Core Razor列表模板页面

    C#中的函数式编程:递归与纯函数(二)   在序言中,我们提到函数式编程的两大特征:无副作用.函数是第一公民.现在,我们先来深入第一个特征:无副作用. 无副作用是通过引用透明(Referential ...

  7. 学习ASP.NET Core Razor 编程系列九——增加查询功能

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

  8. C#编译器优化那点事 c# 如果一个对象的值为null,那么它调用扩展方法时为甚么不报错 webAPI 控制器(Controller)太多怎么办? .NET MVC项目设置包含Areas中的页面为默认启动页 (五)Net Core使用静态文件 学习ASP.NET Core Razor 编程系列八——并发处理

    C#编译器优化那点事   使用C#编写程序,给最终用户的程序,是需要使用release配置的,而release配置和debug配置,有一个关键区别,就是release的编译器优化默认是启用的.优化代码 ...

  9. ES6学习笔记(一)新的变量定义命令let和const

    1.一些历史 ES6(ECMAScript 6.0)是 JavaScript 语言的新一代标准,于2015 年 6 月正式发布,距今已经4年了,它的目标,是使得 JavaScript 语言可以用来编写 ...

随机推荐

  1. Haproxy 配置 ACL 处理不同的 URL 请求

    需求说明服务器介绍:HAProxy Server: 192.168.1.90WEB1 : 192.168.1.103WEB2 : 192.168.1.105Domain: tecadmin.net当用 ...

  2. Nagios 使用 NSClient++ 监控Windows Server

    在被监控的Windows server 主机上安装NSClinet++下载地址:https://www.nsclient.org/download/32bit:http://files.nsclien ...

  3. 【BZOJ1831】[AHOI2008]逆序对(动态规划)

    [BZOJ1831][AHOI2008]逆序对(动态规划) 题面 BZOJ 洛谷 题解 显然填入的数拎出来是不降的. 那么就可以直接大力\(dp\). 设\(f[i][j]\)表示当前填到了\(i\) ...

  4. 654. Maximum Binary Tree

    654. Maximum Binary Tree 题目大意: 意思就是给你一组数,先选一个最大的作为根,这个数左边的数组作为左子树,右边的数组作为右子树,重复上一步. 读完就知道是递归了. 这个题真尼 ...

  5. 解决关于confluence缓慢 字体乱码 宏乱码 编辑不能贴图等问题

    应用场景:Confluence软件不用多说,与Jira一样,都是atlassion的精品软件,不再介绍. 这里因为使用的是破解版的confluence,故遇见一些问题,只能百度谷歌自行解决,也在此记录 ...

  6. Injection with CDI (Part I)

    官方参考:http://docs.jboss.org/weld/reference/latest/en-US/html/index.html https://antoniogoncalves.org/ ...

  7. [USACO18JAN]Sprinklers

    [USACO18JAN]Sprinklers 一个矩形要符合什么条件 右上角的右上有点,左下角的左下有点 所以每列的选择高度为一个区间,小于后缀最大值大于前缀最小值(不管是作为右上角还是左下角) 然后 ...

  8. bzoj2839 集合计数

    F.A.Qs Home Discuss ProblemSet Status Ranklist Contest 入门OJ ModifyUser  Logout 捐赠本站 2839: 集合计数 Time ...

  9. 逻辑回归 代价函数J关于系数theta求导

    J=-y*loga-(1-y)*log(1-a) 梯度下降,求dJ/d_theta_j

  10. Java实现二叉树的前序、中序、后序、层序遍历(递归方法)

      在数据结构中,二叉树是树中我们见得最多的,二叉查找树可以加速我们查找的效率,那么输出一个二叉树也变得尤为重要了.   二叉树的遍历方法分为四种,分别为前序遍历.中序遍历.后序.层序遍历.下图即为一 ...