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. python学习日记(基础数据类型及其方法01)

    数字 int 主要是用于计算的,常用的方法有一种 #既十进制数值用二进制表示时,最少使用的位数i = 3#3的ASCII为:0000 0011,即两位 s = i.bit_length() print ...

  2. Manacher's Algorithm && 647. Palindromic Substrings 计算回文子串的算法

    注:转载自:https://www.cnblogs.com/love-yh/p/7072161.html

  3. 【php】php位运算及其高级应用

    我们之前学过逻辑与(&&)      条件1 && 条件2 当两边条件同时成立时候返回1 逻辑或(||)         条件1 || 条件2    当两边条件只要有一 ...

  4. Linux网络那点事(CentOS、Ubuntu、Kali)

    跨平台系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#linux 在Ubuntu18.04中,传统的配置/etc/network/interfa ...

  5. Typescript学习笔记(三)变量声明及作用域

    ts的变量声明有var,let和const,这尼玛完全跟es6一样嘛.就稍微介绍一下. 大多数js开发者对于var很熟悉了,原生js里没有块级作用域,只有函数作用域和全局作用域,还存在var的变量提升 ...

  6. git init github

    Command line instructions 执行这些命令是在windows 右菜单里面的git bash运行. Git global setup git config --global use ...

  7. bzoj2839 集合计数

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

  8. 利用captcha库绘制验证码

    #导包 from captcha.image import ImageCaptcha from PIL import Image import random import time import os ...

  9. Mysql DML DCL DDL

    在介绍这些SQL语言之前,先罗列一下mysql的常用数据类型和数据类型修饰,供查询参考 后面的带数字表示此类型的字段长度 数值型: TINYINT 1 ,SMALLINT 2,MEDIUMINT 3 ...

  10. NTT学习笔记

    和\(FFT\)相对应的,把单位根换成了原根,把共轭复数换成了原根的逆元,最后输出的时候记得乘以原\(N\)的逆元即可. #include <bits/stdc++.h> using na ...