今天开始,我们来写代码。

学习一门语言,最快的方式就是写代码,做项目。

别的学习教程,都是hello world.

我们就来点不一样的吧。我们不一样!不一样!不一样!

首先,打开VSCODE.( 关于VSCODE配置,见:https://www.jianshu.com/p/83beca927c9e,https://zhuanlan.zhihu.com/p/59879132)

写代码:

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"
    println(x, y, a, b, c, d, e, f, g, h)
}
 
输出结果为:
0 0 0 false 1 2 123 hello 123 hello

我们来一一说明:

1)var x, y int

这里通过var关键词,来定义变量 x,y,并且golang自动赋值为0.所以结果打印都为:0

2)var (  
    a int
    b bool
)
这种声明方式,一般用在全局变量。其中bool为布尔值,默认值为:false.
 
 3)var c, d int = 1, 2
golang可以定义多个变量的类型,并为变量赋值。
 
4)var e, f = 123, "hello"
golang也可以对不同类型的变量,同时赋值,并自动推导类型,这个就是:编译器推导类型的格式。
 
var 的变量声明还有一种更为精简的写法,例如:

  1. hp := 100

这是Go语言的推导声明写法,编译器会自动根据右值类型推断出左值的对应类型。

注意:由于使用了:=,而不是赋值的=,因此推导声明写法的左值变量必须是没有定义过的变量。若定义过,将会发生编译错误。

5)g, h := 123, "hello"
 
这种不带声明格式的只能在函数体中出现
 
短变量声明的形式在开发中的例子较多,比如:

  1. conn, err := net.Dial("tcp","127.0.0.1:8080")

net.Dial 提供按指定协议和地址发起网络连接,这个函数有两个返回值,一个是连接对象(conn),一个是错误对象(err)。如果是标准格式将会变成:

  1. var conn net.Conn
  2. var err error
  3. conn, err = net.Dial("tcp", "127.0.0.1:8080")

因此,短变量声明并初始化的格式在开发中使用比较普遍。

注意:在多个短变量声明和赋值中,至少有一个新声明的变量出现在左值中,即便其他变量名可能是重复声明的,编译器也不会报错,代码如下:

  1. conn, err := net.Dial("tcp", "127.0.0.1:8080")
  2. conn2, err := net.Dial("tcp", "127.0.0.1:8080")

上面的代码片段,编译器不会报 err 重复定义。

 
以上代码,全部可运行。建议用IDE写代码并运行。

最新文章

  1. Provider:SSL Provider,error:0-等待的操作过时
  2. 从零开始学Python第0周:Python基本介绍(部分内容来源于网络)
  3. java中的全等和相似
  4. 【定时任务|开机启动】Windows Server 2008/2012 计划任务配置(任务计划程序)每分钟执行BAT
  5. Android FM模块学习之四源码学习(2)
  6. java,UDP协议简单实现
  7. jstl的mavin依赖
  8. VS2012打包部署Winform程序
  9. TypeHandler的简单实例
  10. (转)Building MariaDB on Mac OS X using Homebrew
  11. 移植MonkeyRunner的图片对比和获取子图功能的实现-Appium篇
  12. ajaxUploadFile在IE9等IE浏览器,上传变json下载的问题解决(SpringMVC + ajaxUploadFile)
  13. hihocoder 1054 滑动解锁 dfs
  14. [转帖]流程控制:for 循环
  15. DB2读取CLOB字段-was报错:操作无效:已关闭 Lob。 ERRORCODE=-4470, SQLSTATE=null
  16. 关于 pyspider Web预览界面太小的解决方法
  17. 两类传输协议:TCP,UDP
  18. JS之JSON.parse和JSON.stringify
  19. day18(javaEE三大组件之一servlet(简介(一)))
  20. Deep Photo的TensorFlow版本

热门文章

  1. Maximum Likelihood 最大似然估计
  2. Chrome OS支持在窗口中运行Linux了!!!
  3. 【ZT】Enhancement Framework – Introduction
  4. Web测试方法_01
  5. linux环境下安装yaf
  6. firewalld防火墙简介
  7. 用linux主机做网关搞源地址转换(snat)
  8. 【神经网络与深度学习】学习笔记:AlexNet&Imagenet学习笔记
  9. Log的相关用法
  10. [codeforces940E]Cashback