一段基础的go语言代码解析

package main

import "fmt"

func main(){
fmt.Println("hello golang")
} // 这是一段输出'hello golang'的go代码
// 一个go文件(后缀名为.go的文件),必须要在一个包(文件夹,package)里
// 代码开始必须引用一个包,main
// 这段代码的入口为main()函数
// 书写一个函数的格式 func 函数名() {
// 函数的逻辑代码
}

代码书写完毕,怎么去运行代码

  • 第一种(推荐):最开始用cmd进入到当前代码的目录下 ,

    执行 go build 文件名.go ---->>> 它会编译这段代码,生成一个文件名.exe的可执行文件,

    最后执行这个可执行文件就行了。

  • 第二种(不推荐):最开始用cmd进入到当前代码的目录下 ,

    执行go run 文件名.go ----->>> 会直接执行go代码

总结上面两种方法:

​ 1)、方式一和方式二达到的效果是完全相同的,go run 这命令其实就是做了方式一的两步,先编译,再执行代码。但是方式二的执行速度比方式一慢,因为他要进行编译。

​ 2)、方式一编译完之后生成的一个可执行的文件,它的大小远远大于那个go文件,这是因为,这个exe文件里有go文件执行需要的一些依赖,你拿着生成的exe(可执行)文件在其他电脑(这台电脑可能没有go语言开发环境)同样是可以执行的。

Go程序开发的注意事项

  • go文件必须是go为后缀名。
  • go程序的执行入口是main()函数。
  • 严格区分大小写。
  • 每行代码后,可以不加分号,go会自动帮你加上。
  • go语言定义的变量或引用的包,不使用会报错,不能进行编译。

Go常用的转义字符

  • \t : 表示一个制表符,通常使用它排版
  • \n : 表示换行
  • \ \ : 转义,最终显示的是 ’\‘
  • \r : 把鼠标光标移到最开始

练习:使用一行代码实现下面图片的格式

package main

import "fmt" // fmt包中提供格式化,输出,输入的函数

func main(){
// 使用一句话输出一个table格式
fmt.Println("姓名\t年龄\t籍贯\t住址\n朱宇\t18\t重庆\t奉节")
}

变量

// 1、定义变量
// 2、赋值
// 3、使用变量
package main
import "fmt" func main(){
// 定义一个int类型的变量名为i
var i int
// 将10的内存地址赋值给变量i
i=10
// 使用变量
fmt.Println(i)
} // Golang变量使用的三种方式
// 1)var i int 定义变量指定类型,但是不赋值,会使用默认值
// 2)var num = 10.10 定义变量不直接类型,直接赋值,程序会自行判断类型
// 3)name := "朱宇" 省略var 但是:=左边不应该是已经声明过的,否则会报错
// 4)var n1,n2,n3 int 一次性定义多个变量
// var name,age,sex = "朱宇",18,"男"
// name,age,sex = "朱宇",18,"男" // Golang变量使用的注意事项
// 5)同一区域里的变量在同一类型中可以不断变化
// 6)在同一作用域中不能重名
// 7)变量 = 变量名 + 类型 + 值

结构struct

Go语言不是一门面向对象的语言,没有面向对象的继承,多态和封装,

但是Go可以通过定义数据结构的方式,也能实现和class相似的功能。

// 写一个例子,实现和class类似的功能
type People struct {
name string
age int
sex string
}
// 上面这段代码就定义了一个People的数据结构,有三个属性,name,age,sex,和下面python代码差不多
class People:
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex // 那么在Go语言中怎么对People进行初始化
// 方式一:初始化出一个叫zhuyu的People实例
zhuyu := People {
name:'朱宇',
age:22,
sex:'male',
// 注意:最后sex:'male'后面的逗号(',')必须要加,不然会报错
}
// 方式二:zh := People('张昊',23,'male')
// 方式三:dsb = People()

最新文章

  1. Apache伪静态在网站目录没有反斜杠后自动添加反斜杠
  2. Android开发(51) 摄像头自动对焦。在OpenCV图像识别中连续拍照时自动对焦和拍照。
  3. 【转】Unity3D的输入(Input)——键盘和鼠标
  4. iOS开发——语法篇&swift经典语法总结
  5. ActiveMQ(5.10.0) - Configuring the Simple Authentication Plug-in
  6. 如何禁止使用teamviwer的使用
  7. 如何快速查看github代码库中第一次commit的记录
  8. www-authenticate与BASE-64认证技术
  9. java并发之CyclicBarrier
  10. pwn-格式化字符串漏洞
  11. spring-cloud-config-server分布式配置中心
  12. 《R语言入门与实践》第六章:R 的环境系统
  13. Java语言中姐种遍历List的方法总结
  14. Laravel5使用QQ邮箱发送邮件配置
  15. Ext.js中自己扩展的EasyGrid
  16. Improving the GPA(hdu4968)dfs
  17. 3. Python3 基本数据类型
  18. hdu 1325 Is It A Tree? 并查集
  19. DataGridView在Cell编辑状态响应回车键下的KeyPress/KeyDown/KeyUp事件
  20. 解决libstdc++.so.5问题

热门文章

  1. mvc 中Request[""]与Request.QueryString[""]
  2. Java内部类详解 2
  3. lxml模块(应用xpath技术)
  4. 数组reduce和map方法
  5. iDempiere 使用指南 使用MRP进行生产及采购排程
  6. Linux服务器性能评估与优化(二)
  7. TiDB, Distributed Database
  8. 03_Jsoup
  9. 统计学中的P值与显著性的意义
  10. Xshell连接不上虚拟机的问题和解决办法